Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml SAX代码效率_Xml_Sax - Fatal编程技术网

Xml SAX代码效率

Xml SAX代码效率,xml,sax,Xml,Sax,关于SAX,我有一个相对一般的问题。我了解它是如何工作的,根据我阅读的教程,我学会了通过拥有大量像inNode这样的布尔数据成员来保持状态,然后在每个事件处理程序中,检查每个布尔值并相应地处理参数 对我来说,这似乎真的很低效,有没有更有效的方法,或者这就是SAX的本质 谢谢, Chris这就是SAX的工作原理。它是为低内存使用率和更简单的处理而设计的。如果代码变得太复杂,您可能希望改用DOM模型。通常,您可以通过简单的标记堆栈来保持状态 当您输入节点时,您将按下 当您离开节点时,您将弹出 有时候

关于SAX,我有一个相对一般的问题。我了解它是如何工作的,根据我阅读的教程,我学会了通过拥有大量像inNode这样的布尔数据成员来保持状态,然后在每个事件处理程序中,检查每个布尔值并相应地处理参数

对我来说,这似乎真的很低效,有没有更有效的方法,或者这就是SAX的本质

谢谢,
Chris

这就是SAX的工作原理。它是为低内存使用率和更简单的处理而设计的。如果代码变得太复杂,您可能希望改用DOM模型。

通常,您可以通过简单的标记堆栈来保持状态

当您输入节点时,您将按下

当您离开节点时,您将弹出


有时候这比很多布尔人好。相反,您要检查堆栈,看看是否有正确的上下文来保存正在解析的数据。

Ah这真是太有创意了。我认为这也会使代码更干净,尽管您可能仍然需要一堆if/else块,对吗?除非你真的很有创意,并且在hashmap中存储了某种处理程序架构,以键作为节点名……否则你很少会有“一串”if/else块。通常,您会对当前上下文进行类似XPath的匹配,以查看是否要保留它。因为上下文是一个堆栈(Python中的一个列表),所以比较很简单。在其他语言中,将堆栈与模板模式进行比较可能有点困难,但它比任何其他语言都更适合正则表达式或XPath匹配。它总是比一堆布尔值好——实际上,我发现不可能想象在没有某种堆栈的情况下使用SAX