xml を操作する C++ アプリケーションがあります。アプリケーションのある時点で DOMNode* を取得し、それを子として要素にアタッチします。
問題は、そのノードにパラメーターを追加したいということです...まあ、それはノードなので要素ではありません...要素だけがパラメーターを持っています...
これは私のコードです:
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);
ご覧のとおり、文字列からノードを作成したいので、解析によってノードを作成し、そのノードをインポートして、新しいノードを接続する dom ツリーに属する新しい同一のノードを作成する必要があります。私の手順は次のとおりです。
既存の dom にアタッチする xml 文字列を取得します (どこかに domdocument として保存されます)。
パーサーを作成する
パーサーを使用して、文字列から dom ツリーを作成します
既存の dom (新しいノードをアタッチする場所) から、インポートを呼び出してノードを複製し、既存の dom にアタッチできるようにします。
取り付けます
問題は、インポートとインポートがノードを取得することです...要素をアタッチしたい...
私はappendChildを使用して要素を追加します...もちろん、メソッドはDOMNode *を必要としますが、それにDOMElement *(DOMNodeから継承)を与えることは問題ありません...
ノードから要素を取得するにはどうすればよいですか??? wd_parser を削除します。