我正在尝试通过value方法以肮脏的方式使用Rapidxml附加一个很大的子树

rapidxml::xml_node<>* node = allocate_node(rapidxml::node_element, "tree");
node->value("<very><long><subtree></subtree></long></very>");


但是在打印文档时,尖括号被扩展为&lt&gt。干净的方法是手动声明并附加子树的每个节点和属性,这很无聊。

有没有一种方法可以防止括号扩展,或者您可以建议其他实用方法来快速添加大分支吗?

最佳答案

好的,我想到了这种解决方法,可以自动创建结构并将其附加:

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);


有什么改进的想法,也许是避免解析子树的额外开销?

10-05 20:46
查看更多