Disons que nous avons le document XML suivant:
QDomDocument doc;
QDomElement element;
element = xml->documentElement();
if(element.isNull() == false)
{
element = element.firstChildElement("children");
if(element.isNull()) return;
element = element.firstChildElement("child");
while(element.isNull() == false)
{
doc = element.toDocument();
if(doc.isNull() == false)
{
// save string into array
array.append(doc.toString());
}
element = element.nextSiblingElement("child");
}
}
3 Réponses :
Depuis que vous avez besoin du format XML lui-même, vous n'avez pas besoin Vous avez juste besoin d'une traversée de fichier ordinaire. p> Ouvrez le fichier à l'aide de p> Vous pouvez lire tout le contenu du fichier par, p> que vous pouvez l'affecter à un pour par exemple, p> Ensuite, vous pouvez diviser tout le contenu en fonction du document em> em> espère qu'il aide ... p> p> qdomelement code> ou qdomdocument code>. qdomelement code> et qdomdocument code> est utilisé pour obtenir les données stockées forte> dans les documents XML. qstring code>. p> \ n code> en utilisant p>
Ty pour la réponse. J'utilise ces classes QDom * parce que j'ai aussi besoin d'analyser / obtenir beaucoup de données avant l'opération discutée. C'est pourquoi je suis curieux si ceux-ci peuvent être faites via ces classes (ou toutes les classes QTXML). Je sais qu'il est possible d'analyser le document "à la main" et cela pourrait fonctionner avec un document simple. Cependant, dans ma situation, le document pourrait être très complexe et j'ai besoin d'opérations similaires dans plusieurs endroits. Fondamentalement tout ce que je sais, c'est qu'il devrait y avoir un nœud à certains niveaux de l'arbre XML et que j'ai besoin d'obtenir chaque branche.
Eh bien, je pense que vous ne pouvez pas faire d'excédence ce que vous voulez avec les classes QT XML, mais il devrait être possible de simplement reconstruire la chaîne vous-même (peut-être ne correspondant pas à l'original à 100%, mais avec la même signification), basé sur le Méthodes Les classes QT XML fournissent.
EDIT: strong>
Petit petit code qui pourrait faire la chose (non testée): p>
Merci pour la réponse. Sur la base de ces réponses, il semble que je dois abandonner la stratégie de sauvegarder les nœuds (en tant que chaîne) et de déterminer quelque chose d'autre.
Je vais ajouter une réponse à ma propre question. Aucune idée pourquoi, mais on dirait que j'ai manqué la fonction suivante dans la documentation.
Void QDomnode :: Save (Qtextstream & Str, intenter) Const P>
Il suffit à peu près que je dois convertir un nœud en une chaîne, par exemple: p>
Qu'en est-il de l'opération opposée? Compte tenu de la chaîne générer un QDomnode pouvant être ultérieurement ajouté à un QDomDocument existant?
@Pierluigi, qui devrait être une question en soi. C'est assez impliqué. Vous créez un qdomdocument code>, utilisez le setContent () code>, puis utilisez un qdomdocumentfragment code> pour copier le résultat dans un autre document ...
Commentaire / * = 4 * n'est pas fermé. Donc lorsque l'erreur de syntaxe.
Aucune idée Pourquoi, mais on dirait que j'ai manqué la fonction suivante Code> probablement parce que personne n'attend que Enregistrer code> et nous recherchons généralement Serialize ou TobyReRay ...