我正在尝试通过value
方法以肮脏的方式使用Rapidxml附加一个很大的子树
rapidxml::xml_node<>* node = allocate_node(rapidxml::node_element, "tree");
node->value("<very><long><subtree></subtree></long></very>");
但是在打印文档时,尖括号被扩展为
<
和>
。干净的方法是手动声明并附加子树的每个节点和属性,这很无聊。有没有一种方法可以防止括号扩展,或者您可以建议其他实用方法来快速添加大分支吗?
最佳答案
好的,我想到了这种解决方法,可以自动创建结构并将其附加:
char txt[] = "<very><long><xml with="attributes"></xml></long></very>"; // or extract from file
rapidxml::xml_document<char> tmp;
tmp.parse<0>(txt);
rapidxml::xml_node<char> *subt = tmp.first_node();
tmp.remove_all_nodes(); // detach, since you can't have more than one parent
appendHere.append_node(subt);
有什么改进的想法,也许是避免解析子树的额外开销?