xmlを操作するC++アプリケーションがあります。 私のアプリケーションの特定の時点でDOMNode *を取得し、それを子要素として要素にアタッチします。Xerces-CのDOMNode *からDOMElementへのパス*
さて問題は、私は、そのノードにパラメータを追加したいということです...よくそれはノードである、それは要素ではないので...唯一の要素はパラメータを持っている...
これは私のコードです:
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ツリーに属する新しい同じノードを作成するノードをインポートする必要があります新しいノードを接続します。 私の手順は次のとおりです。
は、XML文字列は、(どこかのDOMDocumentとして格納されている)既存のDOM
パーサはDOMを作成し使用してパーサ
の作成にアタッチするには、Getツリーから文字列
私の既存のdom(私が新しいノードを付けたい場所)から、インポートを呼び出して、ノード を呼び出して、tに接続できるようにします彼は既存のdom。
は、私があまりにも要素を追加するには、appendChildを使用
...問題はそのインポートとインポートは私のノードを取得している...私がアタッチする要素をしたい
それを添付します...もちろん、メソッドはDOMNode *を望んでいますが、DOMElement *(DOMNodeを継承しています)にはOKです...
ノードからどのように要素を取得できますか? 削除wd_parser;
こんにちは、実際には)(GETNODETYPEで予めノードの種類を確認する必要があります。それがELEMENT_NODEの場合は、DOMElementにキャストできます。 詳細については、http://xerces.apache.org/xerces-c/apiDocs-3/classDOMNode.htmlを参照してください。 – Clemens