Java SAX查找结束标记
使用默认处理程序类查找相应的XML标记是否可行?例如Java SAX查找结束标记,java,xml,parsing,xml-parsing,sax,Java,Xml,Parsing,Xml Parsing,Sax,使用默认处理程序类查找相应的XML标记是否可行?例如 <Object class="my class"> <Property> <Value>1</Value> </Property> </Object> <Object class="my next class"> <Property> <Value>1</Value> </Propert
<Object class="my class">
<Property>
<Value>1</Value>
</Property>
</Object>
<Object class="my next class">
<Property>
<Value>1</Value>
</Property>
</Object>
1.
1.
我想使用startElement()和endElement()方法,但无法在较高级别上解决这个问题。我所能想到的就是使用计数器,想看看是否有人听说过一种更简单的方法。我想根据这两个对象类的开始和结束时间,将它们拆分为两个单独的字符串。有什么建议吗?您需要对默认处理程序类进行子类化(在
startElement
和endElement
期间,您无论如何都需要这样做才能进行任何处理)。当为Object
标记调用startElement
时,创建一个对象并将其引用存储在处理程序的实例变量中。调用endElement
时,将对象保存在某处,并将引用设置为null
。同时,当您接收到其他startElement
和endElement
事件(对于属性
和值
标记)时,对引用对象进行操作
对第二个对象重复此操作。最后,您将保存对象的两个不同实例。您使用什么库来解析此XML?导入javax.XML.parsers.SAXParser;如果我有,你的方法还能用吗?@EricCallan-如果你有嵌套的
Object
标记,那么描述的方法就不能用了。然而,只要稍作改动——使用一堆引用——基本思想就可以实现。当您获得一个对象的startElement
事件并且已经有一个对象引用时,在创建新对象之前,将现有引用推送到堆栈上。在endElement
事件中,仅当堆栈为空时,才将引用设置为null
;否则,将其设置为弹出时堆栈中的内容。