有一个 XML,我使用 SAX 解析器解析它。现在假设我在元素开头收到一条通知
startElement(..)
A
的标签内?
我的想法:
一种方法是维护一个布尔变量 var insideA=false,并在收到通知时将其分配为 true,在
endElement(..)
上将其分配为 false。现在,当当前标签调用 startElement(..)
时,我可以检查这个布尔变量是否设置为 true 或 false。对于替代方法有什么建议吗?
一种方法可能是维护一个布尔变量 var insideA=false, (…)
是的,这看起来是使用 SAX 实现目标的常用方法。
对于替代方法有什么建议吗?
SAX 设置起来有点复杂,但在 RAM 使用方面比 DOM / XPath “更好”。无论如何:
→ 如果您的 XML 适合 RAM,您还可以尝试使用 XPath(内部基于 DOM 模型),这样使用起来更简单。
→ 如果您的 XML 文档很大并且您发现 SAX 使用起来有点烦人,您可以尝试使用 StAX(另请参阅 这个 Java 示例教程)。