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

C 使用libxml-SAX解析器处理大量嵌套元素,c,xml,parsing,sax,libxml2,C,Xml,Parsing,Sax,Libxml2,我目前正在使用libxml库的SAX接口来解析大量(大约60000个)小于1Mb的XML文档。我选择了SAX,因为我认为它是最有效的。在这个用例中,性能会有很大的不同吗?比如说DOM解析器 此外,在我当前的方法中,我有一个包含大量状态的枚举,我在startElement/endElement处理程序的switch语句中使用了这些状态。州的数量越来越多,变得难以管理。在libxml中有没有更好的方法来处理这个问题?例如,我注意到一些Java库允许您创建多个解析器实例,因此当您输入某个元素时,可以将

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

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

当您说“高效”时,我想您是在谈论机器效率?但是程序员的效率更为重要,正如您所发现的,编写SAX应用程序来处理复杂的XML需要大量复杂的代码,这些代码很难开发,也很难调试


您还没有说明处理的输出应该是什么。默认情况下,我会从可用的最高效的程序员语言(通常是XQuery或XSLT)开始编写,并且只有在无法达到性能要求时才使用较低级别的语言。

SAX对于大型文档的速度要快得多。。。直到需要关于遍历的XML节点的大量信息,您才开始构建整个DOM树。