使用libxml SAX解析器处理大量嵌套元素

时间:2014-11-17 08:24:34

标签: c xml parsing sax libxml2

我目前正在使用libxml库的SAX接口来解析大小(大约60000)小于1Mb的XML文档。我选择了SAX,因为我认为它是最有效的。在这个用例中,与DOM解析器一样,性能会有很大差异吗?

此外,在我目前的方法中,我有一个包含大量状态的枚举,我在startElement / endElement处理程序的switch语句中使用它。州的数量正在增长,并且变得难以管理。有没有更好的方法来处理libxml中的这个问题?例如,我注意到一些Java库允许您创建多个解析器实例,因此当您输入某个元素时,您可以委托该特定元素的另一个解析器。

1 个答案:

答案 0 :(得分:2)

当你说"高效"时,我想你在谈论机器效率?但程序员效率更重要,正如您所发现的那样,编写SAX应用程序来处理复杂的XML需要大量复杂的代码,这些代码难以开发且难以调试。

您还没有说出您的处理输出应该是什么。默认情况下,我会先用最有效的程序员语言编写它,通常是XQuery或XSLT,如果不能达到性能要求,那么只能使用低级语言。