Xml SAX代码效率
关于SAX,我有一个相对一般的问题。我了解它是如何工作的,根据我阅读的教程,我学会了通过拥有大量像inNode这样的布尔数据成员来保持状态,然后在每个事件处理程序中,检查每个布尔值并相应地处理参数 对我来说,这似乎真的很低效,有没有更有效的方法,或者这就是SAX的本质 谢谢,Xml SAX代码效率,xml,sax,Xml,Sax,关于SAX,我有一个相对一般的问题。我了解它是如何工作的,根据我阅读的教程,我学会了通过拥有大量像inNode这样的布尔数据成员来保持状态,然后在每个事件处理程序中,检查每个布尔值并相应地处理参数 对我来说,这似乎真的很低效,有没有更有效的方法,或者这就是SAX的本质 谢谢, Chris这就是SAX的工作原理。它是为低内存使用率和更简单的处理而设计的。如果代码变得太复杂,您可能希望改用DOM模型。通常,您可以通过简单的标记堆栈来保持状态 当您输入节点时,您将按下 当您离开节点时,您将弹出 有时候
Chris这就是SAX的工作原理。它是为低内存使用率和更简单的处理而设计的。如果代码变得太复杂,您可能希望改用DOM模型。通常,您可以通过简单的标记堆栈来保持状态 当您输入节点时,您将按下 当您离开节点时,您将弹出
有时候这比很多布尔人好。相反,您要检查堆栈,看看是否有正确的上下文来保存正在解析的数据。Ah这真是太有创意了。我认为这也会使代码更干净,尽管您可能仍然需要一堆if/else块,对吗?除非你真的很有创意,并且在hashmap中存储了某种处理程序架构,以键作为节点名……否则你很少会有“一串”if/else块。通常,您会对当前上下文进行类似XPath的匹配,以查看是否要保留它。因为上下文是一个堆栈(Python中的一个列表),所以比较很简单。在其他语言中,将堆栈与模板模式进行比较可能有点困难,但它比任何其他语言都更适合正则表达式或XPath匹配。它总是比一堆布尔值好——实际上,我发现不可能想象在没有某种堆栈的情况下使用SAX