XML 使用 sax 解析器从特定的重复标记中获取值 java
XML getting value from specific duplicate tag using sax parser java
我正在尝试使用 sax 解析器在 xml 中获取一些信息,
这里是:
<IDENT>show</IDENT>
<FORMAL_PARAM_LIST>
FORMAL_PARAM_LIST
</FORMAL_PARAM_LIST>
<BLOCK_SCOPE>
BLOCK_SCOPE
<VAR_DECLARATION>
VAR_DECLARATION
<LOCAL_MODIFIER_LIST>
LOCAL_MODIFIER_LIST
</LOCAL_MODIFIER_LIST>
<TYPE>
TYPE
<QUALIFIED_TYPE_IDENT>
QUALIFIED_TYPE_IDENT
<IDENT>MenuUI</IDENT>
</QUALIFIED_TYPE_IDENT>
</TYPE>
<VAR_DECLARATOR_LIST>
VAR_DECLARATOR_LIST
<VAR_DECLARATOR>
VAR_DECLARATOR
<IDENT>menu</IDENT>
<EXPR>
EXPR
<CLASS_CONSTRUCTOR_CALL>
STATIC_ARRAY_CREATOR
<QUALIFIED_TYPE_IDENT>
QUALIFIED_TYPE_IDENT
<IDENT>MenuUI</IDENT>
</QUALIFIED_TYPE_IDENT>
<ARGUMENT_LIST>
ARGUMENT_LIST
</ARGUMENT_LIST>
</CLASS_CONSTRUCTOR_CALL>
</EXPR>
</VAR_DECLARATOR>
</VAR_DECLARATOR_LIST>
</VAR_DECLARATION>
<EXPR>
EXPR
<METHOD_CALL>
METHOD_CALL
<DOT>.<IDENT>menu</IDENT><IDENT>showJASPform</IDENT></DOT>
<ARGUMENT_LIST>
ARGUMENT_LIST
</ARGUMENT_LIST>
</METHOD_CALL>
</EXPR>
</BLOCK_SCOPE>
基本上我想取ident tag(),在xml里面有4个ident,但问题是我不想全部取,我只想取第一个ident( show ident) 我已经在尝试通过实现布尔值来标记我们在 xml 元素中的位置来解决这个问题,但我对如何在第一个 ident 处停止感到困惑。
非常感谢您的关注
使用从 org.xml.sax.helpers.DefaultHandler
派生的 class。一旦在 startElement()
方法中找到所需的元素,就立即抛出 SAXException
。这将立即停止 SAX 解析器。
抱歉发帖晚了,对于那些试图解决这个问题的人,除了使用 mr dmitry trifonov 方法外,你们还可以在 sax 中使用 Stack 方法,你们可以在这里找到 sax 的 stack 方法文章:http://www.javaworld.com/article/2076202/java-se/mapping-xml-to-java--part-2.html
希望对您有所帮助!
我正在尝试使用 sax 解析器在 xml 中获取一些信息,
这里是:
<IDENT>show</IDENT>
<FORMAL_PARAM_LIST>
FORMAL_PARAM_LIST
</FORMAL_PARAM_LIST>
<BLOCK_SCOPE>
BLOCK_SCOPE
<VAR_DECLARATION>
VAR_DECLARATION
<LOCAL_MODIFIER_LIST>
LOCAL_MODIFIER_LIST
</LOCAL_MODIFIER_LIST>
<TYPE>
TYPE
<QUALIFIED_TYPE_IDENT>
QUALIFIED_TYPE_IDENT
<IDENT>MenuUI</IDENT>
</QUALIFIED_TYPE_IDENT>
</TYPE>
<VAR_DECLARATOR_LIST>
VAR_DECLARATOR_LIST
<VAR_DECLARATOR>
VAR_DECLARATOR
<IDENT>menu</IDENT>
<EXPR>
EXPR
<CLASS_CONSTRUCTOR_CALL>
STATIC_ARRAY_CREATOR
<QUALIFIED_TYPE_IDENT>
QUALIFIED_TYPE_IDENT
<IDENT>MenuUI</IDENT>
</QUALIFIED_TYPE_IDENT>
<ARGUMENT_LIST>
ARGUMENT_LIST
</ARGUMENT_LIST>
</CLASS_CONSTRUCTOR_CALL>
</EXPR>
</VAR_DECLARATOR>
</VAR_DECLARATOR_LIST>
</VAR_DECLARATION>
<EXPR>
EXPR
<METHOD_CALL>
METHOD_CALL
<DOT>.<IDENT>menu</IDENT><IDENT>showJASPform</IDENT></DOT>
<ARGUMENT_LIST>
ARGUMENT_LIST
</ARGUMENT_LIST>
</METHOD_CALL>
</EXPR>
</BLOCK_SCOPE>
基本上我想取ident tag(),在xml里面有4个ident,但问题是我不想全部取,我只想取第一个ident( show ident) 我已经在尝试通过实现布尔值来标记我们在 xml 元素中的位置来解决这个问题,但我对如何在第一个 ident 处停止感到困惑。
非常感谢您的关注
使用从 org.xml.sax.helpers.DefaultHandler
派生的 class。一旦在 startElement()
方法中找到所需的元素,就立即抛出 SAXException
。这将立即停止 SAX 解析器。
抱歉发帖晚了,对于那些试图解决这个问题的人,除了使用 mr dmitry trifonov 方法外,你们还可以在 sax 中使用 Stack 方法,你们可以在这里找到 sax 的 stack 方法文章:http://www.javaworld.com/article/2076202/java-se/mapping-xml-to-java--part-2.html
希望对您有所帮助!