Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在寻找一个支持 DOM 接口的 XML 库。性能对我来说很重要,所以我目前正在研究 rapidxml 和 pugixml。
问题是我的应用程序需要修改 DOM 树,包括移动节点。而且我看不到这样做的直接方法(无论是使用 rapidxml 还是使用 pugixml)。看来我需要复制/克隆节点,如果我要移动的子树很深,这可能会导致大量复制操作。
有没有更有效的方法(使用 rapidxml 或 pugixml)(例如交换指针等)?如果没有,是否有任何其他轻量级库允许这样做?
谢谢!
pugixml 现在(截至一个小时前)能够廉价地移动节点子树 - 请参阅 xml_node::prepend_move/append_move/insert_move_before/insert_move_after。
请注意,这些操作不是恒定时间 - 或者更确切地说,操作本身是,但有一个验证步骤可防止在其自己的子树内移动节点(这将导致节点与树的其余部分分离并导致内存泄漏);这一步必须遍历新节点位置的祖先链,使得移动 O(logN)。