std::string src = "<xml><node1>aaa</node1><node2>bbb</node2><node1>ccc</node1></xml>";
std::string src2 = "<nodex>xxx</nodex>";
Я хочу добавить узел в src2 внутри дерева в src, используя RapidXml. Я делаю это:
xml_document<> xmldoc;
xml_document<> xmlseg;
std::vector<char> s(src.begin(), src.end());
std::vector<char> x(src2.begin(), src2.end());
xmldoc.parse<0>(&s[0]);
xmlseg.parse<0>(&x[0]);
xml_node<>* a = xmlseg.first_node(); /* Node to append */
xmldoc.first_node("xml")->append_node(a); /* Appending node a to the tree in src */
Что ж, отлично, он компилируется, но при запуске я получил эту ужасную ошибку:
void rapidxml::xml_node::append_node(rapidxml::xml_node*) [с Ch = char]: Утверждение `child && !child->parent() && child->type() != node_document' не удалось. Прервано
Я не знаю, как это сделать. Проблема проста, мне нужно добавить узел в дерево (xml), но у меня есть строки.
Я предполагаю, что это происходит потому, что я пытаюсь вставить узел дерева в другое дерево... в это дерево можно добавить только узлы, выделенные для данного дерева... это отстой...
Есть ли способ сделать то, что мне нужно, простым способом?
Спасибо.