Раньше я спрашивал о схожей проблеме в RapidXml, теперь я хочу знать, то же самое, но с использованием Xerces-C.
Я работаю над приложением c ++, которое должно анализировать xml.
Рассмотрим следующее:
XML-файл: file1.xml
<root>
<node1>value1</node1>
<node2>value2</node2>
</root>
XML-файл: file2.xml
<anotherroot>
<anothernode1>anothervalue1</anothernode1>
<anothernode2>anothervalue2</anothernode2>
</anotherroot>
мой cpp файл
using namespace xercesc;
// First tree
XercesDOMParser* parser1 = new XercesDOMParser();
parser1->parse("file1.xml"); // Loading xml and building tree (XercesDOMParser owns the document)
DOMDocument* doc1 = parser1->getDocument();
DOMElement* el1 = doc1->getDocumentElement(); // Getting root
// Second tree
XercesDOMParser* parser2 = new XercesDOMParser();
parser2->parse("file2.xml"); // Loading xml and building tree (XercesDOMParser owns the document)
DOMDocument* doc2 = parser2->getDocument();
DOMElement* el2 = doc2->getDocumentElement(); // Getting root
Я хотел бы сделать это:
el2->appendChild(el1);
Так что конечный xml в документе doc2 будет
<anotherroot>
<anothernode1>anothervalue1</anothernode1>
<anothernode2>anothervalue2</anothernode2>
<root>
<node1>value1</node1>
<node2>value2</node2>
</root>
</anotherroot>
Но при этом я получаю:
завершить вызов после броска
экземпляр
'xercesc_3_1 :: DOMException' прервано
Наверное, потому что элемент, который я хочу прикрепить, принадлежит другому дереву . Как я могу достичь этого результата? Проблема, в основном, в том, что у меня есть дерево и строка, содержащая сегмент XML.
Мне нужно проанализировать строку, чтобы получить объект DOM, представляющий этот xml и присоединяющийся к узлу другого дерева.
Самое главное, что у меня есть строка с xml внутри ... Я не могу обойти это важное требование. Из нити, получая дом и прикрепляя его.
Кажется, что-то невозможное ... возможно?
Как я могу это сделать ???
Я действительно не могу согласиться с тем фактом, что программисты Xerces-C никогда не представляли такой сценарий и не обеспечивали разумную функциональность для достижения такого решения.
Может быть, этого было бы достаточно, даже если бы я мог сказать мне, есть ли способ ИЗМЕНЕНИЯ СОБСТВЕННОСТИ НА УЗЕЛ с помощью узла или элемента. Видите ли, WRONG_DOCUMENT_ERR возникает, когда выполняется то, что я пробовал раньше. Что ж, если бы библиотека предоставила способ изменить владельца узла так, чтобы он принадлежал другому документу, я был бы в порядке, и моя проблема была бы решена!
Thankyou