Comment puis-je utiliser POCO de parser un fichier xml et d'en extraire un nœud particulier à un std::string?

Je veux extraire un nœud particulier à l'aide de POCO de bibliothèques, mais ne peuvent pas comprendre comment le faire. Je suis nouveau sur XML.

Le XML lui-même ressemble à quelque chose comme ceci (en abrégé):

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created by XMLPrettyPrinter on 11/28/2012 from  -->
<sbml xmlns = "http://www.sbml.org/sbml/level2/version4" level = "2" version = "4">
<model id = "cell">
  <listOfSpecies>
</listOfSpecies>
  <listOfParameters>
     <parameter id = "kk1" value = "1"/>
  </listOfParameters>
  <listOfReactions>
     <reaction id = "J1" reversible = "false">
... much stuff here ..
  </listOfReactions>
</model>
</sbml>

Je veux extraire tout dans le listOfReactions nœud et de le stocker dans un std::string, pour plus tard, le hachage MD5.

J'ai essayé ceci:

ifstream in(JoinPath(gTestDataFolder, "Test_1.xml").c_str());
InputSource src(in);
DOMParser parser;
AutoPtr<Document> pDoc = parser.parse(&src);
NodeIterator it(pDoc, Poco::XML::NodeFilter::SHOW_ALL);
Node* pNode = it.nextNode();

while(pNode)
{
    clog<<pNode->nodeName()<<endl;
    string elementID = "listOfReactions";
    if(pNode->nodeName() == "listOfReactions")
    {
         //Extract everything in this node... how???
    }

    pNode = it.nextNode();
}
  • Alors, qu'avez-vous essayé?
  • J'ai essayé de leur exemple, impliquant un DOM parser. Je suis en mesure d'obtenir pour le nœud, mais ne sais pas chaud pour en extraire son contenu. Je peux imprimer pNode->getNodeValue(), mais qui imprime rien..
  • Le nœud "listOfReactions" ne tient pas la valeur. Il y a un enfant nœud avec le nom "#texte" le maintien de la valeur. Il n'est pas évident, mais en faisant "pNode->firstNode()->nodeValue()" permet d'obtenir la valeur.