使用XERCES合并两个DOM文档

Merge two DOM documents using XERCES

本文关键字:两个 DOM 文档 XERCES 合并 使用      更新时间:2023-10-16

我只需要使用xerces将一个xml子树附加到另一个xml子树,

                DOMNode *tempNode;
                DOMElement *temp;
                DOMNode *paraNode;
                DOMNode *dest;
                XMLCh *xmlchElems = XMLString::transcode("lists");
                XMLCh *xmlchElem = XMLString::transcode("list1");
                DOMNodeList *mainElm1 = defDoc1->getElementsByTagName(xmlchElems);
                DOMNodeList *mainElm2 = defDoc2->getElementsByTagName(xmlchElems);
                DOMNodeList *defs1 = ((DOMElement*)(mainElm1->item(0)))->getElementsByTagName(xmlchElem);
                DOMNodeList *defs2 = ((DOMElement*)(mainElm2->item(0)))->getElementsByTagName(xmlchElem);
//
//   Merging starts here
//
                paraNode = mainElm2->item(0);
                tempNode = defs1->item(0);
                dest = defDoc1->importNode(tempNode, true);
                paraNode->appendChild(dest);
file1 . xml

<file1>
<lists>
    <list1> </list1>
    <list2> </list2>
</lists>
</file1>

file2.xml

<file2>
<lists>
    <list1> </list1>
    <list2> </list2>
</lists>
</file2>

请建议用于此目的的API

嘿,我找到了一个简单的解决方案:

XMLCh * file1= XMLString::transcode("file1");
XMLCh * lists = XMLString::transcode("lists");
DOMNodeList* parNodeList1 = defDoc1->getElementsByTagName(lists);
DOMNodeList* parNodeList2 = defDoc2->getElementsByTagName(root);
DOMNode *defNode1 = parNodeList1->item(0);
DOMNode *defNode2 = parNodeList2->item(0);
temp = defDoc2->importNode(defNode1, true);
defNode2->appendChild(temp);

现在您可以编写defDoc2,因为它是两个文件的合并。