質問

XMLを操作するC ++アプリケーションがあります。さて、アプリケーションのある時点でドムノード*を取得し、それから子供の頃にそれを要素に添付します。

問題は、そのノードにパラメーターを追加したいということです...まあそれはノードであるため、要素ではありません...要素のみがパラメーターを持っています...

これは私のコードです:

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文字列を取得して、既存のDOMに接続します(どこかにdomdocumentとして保存されます)

  • パーサーを作成します

  • パーサーを使用して、文字列からDOMツリーを作成します

  • 既存のDOM(新しいノードを取り付けたい場所)から、インポートを呼び出してノードをクローンして、既存のDOMに接続できるようにします。

  • それを添付します

問題は、インポートとインポートが私にノードを取得することです...私は要素を添付したいです...

私はappendChildを使用して要素も追加します...もちろん、メソッドはdomnode*を望んでいます*が、ドメレメント*(domnodeから継承する)は大丈夫です...

ノードから要素を取得するにはどうすればよいですか? wd_parserを削除します。

役に立ちましたか?

解決

わかりました、私はそれを発見しました...

ノードを要素に再キャストするだけで完了します... domnodeは純粋な仮想クラスであり、ドメレメントの親です...それは正しいことであり、物事を行う方法でもあります(論理的に言えば)。

DOMElement* = dynamic_cast<DOMElement*>(node);

:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top