Je souhaite analyser certaines données d'un fichier XML avec TinyXML.Trouver un nœud spécifique dans un document XML avec TinyXML
Voilà le contenu de mon fichier text.xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<toto>
<tutu>
<tata>
<user name="toto" pass="13" indice="1"/>
<user name="tata" pass="142" indice="2"/>
<user name="titi" pass="azerty" indice="1"/>
</tata>
</tutu>
</toto>
Je veux accéder au premier élément « utilisateur ». La manière de procéder est la suivante:
TiXmlDocument doc("test.xml");
if (doc.LoadFile())
{
TiXmlNode *elem = doc.FirstChildElement()->FirstChildElement()->FirstChildElement()->FirstChildElement();
std::cout << elem->Value() << std::endl;
}
En sortie: utilisateur.
Mais le code est plutôt moche et pas générique. J'ai essayé le code ci-dessous pour simuler le même comportement que le code ci-dessus mais cela ne fonctionne pas et une erreur est survenue. Peut-être que j'ai manqué une fonction spéciale dans la bibliothèque qui peut faire ce travail (une fonction getElementByName). Je veux juste obtenir un pointeur vers l'élément où la valeur est celle que je cherche. Est-ce que quelqu'un peut m'aider? Merci d'avance pour votre aide.
On dirait que le [ 'virtual bool TiXmlNode :: accept()' méthode] (http://www.grinninglizard.com /tinyxmldocs/classTiXmlNode.html#cc0f88b7462c6cb73809d410a4f5bb86) est ce que vous voulez. Implémentez l'interface ['Visitor'] (http://www.grinninglizard.com/tinyxmldocs/classTiXmlVisitor.html) et le' TiXmlNode' fera marcher l'arbre pour vous. – Tomalak