Java:如何使用SAX确定XML解析期间的深度级别

时间:2011-06-06 06:06:39

标签: java xml saxparser

我正在扩展org.xml.sax.helpers.DefaultHandler来解析XML。 如何在解析过程中确定深度级别?

例如:

<?xml version="1.0" encoding="utf-8"?>
<jsk:Dataset gml:id="Dataset1" ....>
    <gml:description>....</gml:description>
    <gml:boundedBy>
        ...
    </gml:boundedBy>
</jsk:Dataset>

<jsk:Dataset>标记位于0级

<gml:description><gml:boundedBy>标记位于第1级,依此类推......

赞赏任何关于正确方向的指导。

2 个答案:

答案 0 :(得分:3)

DefaultHandler类表示它正在通过startElement方法处理新元素,并且已使用endElement方法完成了相同的处理。您可以通过在子类中覆盖它们来挂钩这些方法。

在这种情况下,也可以使用在实例字段中存储状态的另一个答案中陈述的方法。输入startElement时递增,退出endElement时递减。

答案 1 :(得分:2)

每次调用SAXListener.startTag()时,深度都会增加。 每次调用SAXListener.endTag()时,深度都会减小。

在这些回调方法中递增/递减处理程序类的实例字段,以跟踪您的深度。