我正在扩展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级,依此类推......
赞赏任何关于正确方向的指导。
答案 0 :(得分:3)
DefaultHandler类表示它正在通过startElement
方法处理新元素,并且已使用endElement
方法完成了相同的处理。您可以通过在子类中覆盖它们来挂钩这些方法。
在这种情况下,也可以使用在实例字段中存储状态的另一个答案中陈述的方法。输入startElement
时递增,退出endElement
时递减。
答案 1 :(得分:2)
每次调用SAXListener.startTag()
时,深度都会增加。
每次调用SAXListener.endTag()
时,深度都会减小。
在这些回调方法中递增/递减处理程序类的实例字段,以跟踪您的深度。