【问题标题】:Trouble with SAX ParserSAX 解析器的问题
【发布时间】:2010-07-20 11:01:29
【问题描述】:

我有一个以下格式的 xml 文件:

<Query>
   <map>
      <value name="val1">1</value>
      <value name="val2">2</value>
   </map>
</Query>
<Quest>
   <map>
      <value name="val1">6</value>
      <value name="val2">8</value>
   </map>
</Quest>

当我编写 SAX 解析器时,我会从头到尾获取所有值,但我需要编写一个条件,该条件将包含标签名称,例如 Query / Quest,并且只获取它们特定的名称和值。

我不知道如何添加这个条件,一旦满足我的条件并且我的对象被解析,我不需要解析其余的标签。

注意:我正在用 Java 编写。

【问题讨论】:

    标签: java saxparser


    【解决方案1】:
    • 在 startElement 中,根据给定名称检查元素名称。例如,如果您正在查找“Query”并且名称为“Query”,请将某些标志设置为 true。
    • 在 startElement 中,如果元素名称为“value”且标志为 true,则将名称和值存储在映射中。
    • 在endElement 中,如果元素名称等于“Query”,则将该标志设置为false。 (可选)完全停止解析。

    【讨论】:

    • 萨克斯不能。您阅读整个文件,直到获得所需的所有信息。
    【解决方案2】:

    如果您只想要一组特定元素的数据,那么基于 DOM 的解析器,尤其是使用 XPath 的解析器来获取所需字段可能会更容易。

    xpath 库是jaxen,它可以与我使用过的几个dom 一起使用JDOM

    【讨论】:

    • 不幸的是,我只需要使用 Sax Parser 而没有其他库!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    相关资源
    最近更新 更多