我通过C使用libxml来处理xml文件创建和解析。直到最近一切都顺利进行,但是出现了一个案例,其中一棵树有一个子节点,我们称之为S
,大约有200,000个孩子。这个案例工作得非常慢,我怀疑这个功能:
xmlNewChild(/**/);
我用来构建树,必须遍历S
的每个孩子,再添加一个孩子。由于一个也接受提示的函数(指向最后添加的函数的指针)似乎不存在,是否有更好的方法来构建树(可能是批量构建方法)?如果这些数字微不足道,我应该在其他地方寻找不足之处,请告诉我。
答案 0 :(得分:1)
是的,您可能希望使用libxml的xmlReader和xmlWriter API的组合,而不是使用xmlTree将整个XML保留在内存中。它们都是流式传输,因此它不必将整个文档保留在内存中,也不会因为元素数量而出现任何缩放问题。
xmlReader和xmlWriter的示例可以在这里找到: