Объединить два документа DOM, используя XERCES

Мне просто нужно добавить 1 поддерево xml к другому, используя xerces,

                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, которые должны использоваться для этой цели.

0

Решение

Привет, я нашел простое решение:

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, так как это слияние двух файлов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]