J'ai une application c++ qui manipule du xml. Eh bien, à un certain point de mon application, j'obtiens un DOMNode* et je l'attache à un élément comme enfant.
Le problème est que je voudrais ajouter des paramètres à ce noeud... c'est un noeud et non un élément... seuls les éléments ont des paramètres...
Voici mon code :
xercesc::DOMNode* node = 0;
std::string xml = from_an_obj_of_mine.GetXml(); /* A string with xml inside, the xml is sure an element having something inside */
xercesc::MemBufInputSource xml_buf((const XMLByte*)xml.c_str(), xml.size(), "dummy");
xercesc::XercesDOMParser* parser = new xercesc::XercesDOMParser();
parser->parse(xml_buf); /* parser will contain a DOMDocument well parsed from the string, I get here the node i want to attach */
node = my_pointer_to_a_preexisting_domdocument->GetXmlDocument()->importNode(parser->getDocument()->getDocumentElement(), true); /* I want to attach the node in parser to a node of my_pointer_to_an_el_of_my_preexisting_domdocument, it is a different tree, so I must import the node to attach it later */
my_pointer_to_an_el_of_my_preexisting_domdocument->appendChild(node);
Comme vous pouvez le voir, je veux créer un nœud à partir d'une chaîne de caractères, je le crée par le biais d'une analyse syntaxique et je dois ensuite importer le nœud pour créer un nouveau nœud identique appartenant à l'arbre dom où je veux attacher le nouveau nœud. Mes étapes sont les suivantes :
-
Obtenez la chaîne xml à attacher à un dom préexistant (stocké comme un domdocument quelque part)
-
Créer un analyseur syntaxique
-
En utilisant le parser, créez un arbre dom à partir de la chaîne de caractères
-
À partir de mon domaine préexistant (où je veux attacher mon nouveau nœud), appelez l'importation et clonez le nœud. afin qu'il puisse être attaché au domaine préexistant.
-
Attachez-le
Le problème est que l'importation et l'importation me donne un noeud... Je veux un élément à attacher...
J'utilise appendChild pour ajouter des éléments aussi... bien sûr la méthode veut DOMNode* mais lui donner un DOMElement* (qui hérite de DOMNode) est correct...
Comment obtenir un élément à partir d'un nœud ??? supprimer wd_parser ;