使用libxml2 SAX API有效地合并文件

时间:2011-10-21 19:57:41

标签: c++ libxml2

我正在尝试将多个文件与libxml2 SAX合并。原始文件如下所示:

<xml>
   <section1>
       <data />
       <data />
   </section1>
   <section2>
       <data />
       <data />
   </section2>
   <section3>
       <data />
       <data />
   </section3>
</xml>

我想要做的是将不同文件中相同部分的数据放在适当部分的一个大文件中。我所做的是读取第一个文件section1并立即写入合并文件section1。然后我和我做的其他文件一样。之后我转到第2节。

它工作正常,但我必须读取所有文件的次数。我想知道的是,我是否可以在经过section1之后暂停读取file1并在所有其他文件中读取section1后继续读取。

1 个答案:

答案 0 :(得分:0)

我不认为这是可能的。您可以在原始文件的回调中的任意时间开始二次解析,但我不认为您可以在不完全完成或中止第二次解析的情况下停止二次解析(返回到原始解析)。

我强烈建议您查看xmlReader界面。它不是由回调驱动的,你反复调用xmlTextReaderRead来推进它,并且你可以随时在读者之间进行交换。你一定能够得到你正在寻找的行为。

可从以下网站获取示例 http://xmlsoft.org/examples/index.html#xmlReader