Est-ce que quelqu'un a du code pour parcourir les nœuds d'un sous-arbre dans TinyXML? IE: Étant donné un parent, parcourez tous ses enfants et tous les enfants de ses enfants?TinyXML Itérer sur une sous-arborescence
Répondre
La réponse de Begemoth me semble plutôt bonne.
Voici une version simplifiée de la méthode de TiXmlElement accept(), qui n'utilise pas un visiteur et prend place un TiXmlNode * comme paramètre: méthode
void TiXmlIterator::iterate(const TiXmlNode* el)
{
cout << "Iterating Node " << el->Value() << endl;
// More useful code here...
for (const TiXmlNode* node=el->FirstChild(); node; node=node->NextSibling())
{
iterate(node);
}
// And/Or here.
}
Le accept() prend un TiXmlVisitor comme paramètre et fait tout le itération pour vous, cependant. Et vous n'avez pas à l'appeler sur tout le document, juste le nœud racine du sous-arbre que vous voulez traverser. De cette façon, vous pouvez définir un comportement spécifique pour les sous-classes de TiXmlNode, en remplaçant les bonnes méthodes. Regardez l'implémentation de TiXmlPrinter dans TinyXml's source code pour un bon exemple de la façon dont c'est fait.
Dans le cas où vous ne voulez pas le faire, est un autre exemple ici:
bool MyTiXmlVisitor::Visit(const TiXmlText& text)
{
cout << "Visiting Text: " << text.Value() << endl;
return true; // This will ensure it keeps iterating
}
Ceci agira sur tous les éléments de texte dans la sous-arborescence du nœud que vous appelez accept() sur. Pour agir sur tous les éléments, remplacer les méthodes virtuelles restantes de TiXmlVisitor. Ensuite, dans le code où vous voulez itérer sur la sous-arborescence, procédez comme suit:
subtree_root_node->Accept(my_tixmlvisitor_object);
Vous pouvez utiliser l'implémentation de modèle de visiteur dans la bibliothèque. Créez une classe héritée de TiXmlVistor, remplacez les méthodes nécessaires telles que VisitElement, puis appelez la méthode Accept() pour un nœud particulier.
Pas tout à fait ce que je demandais – Raindog
- 1. Itérer sur une plage d'itératives
- 2. Comment itérer sur une séquence boost :: fusion?
- 3. itérer sur une colonne d'entité LINQ
- 4. Itérer sur une dimension arbitraire en numpy
- 5. Itérer sur enum?
- 6. Itérer sur les couleurs
- 7. comportement étrange de TinyXML ++
- 8. Tinyxml pour imprimer les attributs
- 9. TinyXML et récupération de valeurs
- 10. ant itérer sur les fichiers
- 11. Itérer sur les dictionnaires VBA?
- 12. C++: itérer sur une liste d'un type générique
- 13. Comment puis-je itérer sur une référence de tableau Perl?
- 14. problème itérer sur une série chronologique en clojure
- 15. comment itérer en sens inverse sur une carte en C++
- 16. Spring FactoryBean - itérer sur une liste de "création d'objet"
- 17. itérer sur une collection et renvoyer l'élément correspondant
- 18. Itérer sur une structure XML inconnue avec PHP (DOM)
- 19. Itérer sur une matrice et combiner deux matrices
- 20. Itérer sur une chaîne/strlen avec des caractères tracés
- 21. Itérer sur une colonne de base de données dans Django
- 22. Comment itérer sur une carte nichée dans <c:forEach>
- 23. Vérifiez s'il est sûr de itérer sur une variable JavaScript
- 24. comment voulez-vous itérer sur une liste django
- 25. Itérer sur une liste de chaînes en Java?
- 26. Itérer à travers une structure?
- 27. itérer une liste avec ForEach
- 28. TinyXML et la préservation des entités HTML
- 29. Erreur d'exécution avec l'accès aux éléments tinyXML
- 30. Erreur de segmentation en utilisant Tinyxml
Vous recherchez code réel. – Raindog
Le code TiXmlPrinter devrait être un bon point de départ. Y a-t-il quelque chose que vous vouliez faire à chaque nœud spécifiquement? – brak3000
Ok, édité ma réponse pour préciser ce que je et (je suppose) Begemoth signifiait. HTH. – brak3000