在 SAX 解析器中确定一个标签是否在另一个标签内

问题描述 投票:0回答:1

有一个 XML,我使用 SAX 解析器解析它。现在假设我在元素开头收到一条通知

startElement(..)

这时候我就会知道SAX解析器所在的标签名。但是我如何判断当前标签是否位于名为
A
的标签内?

我的想法:
一种方法是维护一个布尔变量 var insideA=false,并在收到通知时将其分配为 true,在

endElement(..)
上将其分配为 false。现在,当当前标签调用
startElement(..)
时,我可以检查这个布尔变量是否设置为 true 或 false。
我不确定是否有其他内置方法可以做到这一点。如果必须对多个标签执行此操作,这将需要创建多个布尔变量,这可能会变得混乱。

对于替代方法有什么建议吗?

  • 可能更改为 DOM 解析器或任何其他解析器可以让事情变得更容易?
java sax
1个回答
0
投票

一种方法可能是维护一个布尔变量 var insideA=false, (…)

是的,这看起来是使用 SAX 实现目标的常用方法。

对于替代方法有什么建议吗?

SAX 设置起来有点复杂,但在 RAM 使用方面比 DOM / XPath “更好”。无论如何:

→ 如果您的 XML 适合 RAM,您还可以尝试使用 XPath(内部基于 DOM 模型),这样使用起来更简单。

→ 如果您的 XML 文档很大并且您发现 SAX 使用起来有点烦人,您可以尝试使用 StAX(另请参阅 这个 Java 示例教程)。

© www.soinside.com 2019 - 2024. All rights reserved.