【问题标题】:using SAX parser, how do you parse an xml file in java使用 SAX 解析器,如何在 java 中解析 xml 文件
【发布时间】:2017-07-27 02:35:30
【问题描述】:

是否可以在 SAX 解析器中给出路径表达式?我有一个 XML 文件,它有几个相同的名称标签,但它们在不同的元素中。有什么方法可以区分它们。这是 XML:

<report id="322077">
        <update>
          <when>1136117311</when>
          <what>nobody@mozilla.org</what>
        </update>
        <update>
          <when>1136117422</when>
          <what>asqueella@gmail.com</what>
        </update>
      </report>
    <report id="322074">
        <update>
          <when>1136117311</when>
          <what>nobody@mozilla.org</what>
        </update>
        <update>
          <when>1136117422</when>
          <what>asqueella@gmail.com</what>
        </update>
      </report>
    <report id="322076">
        <update>
          <when>1136117311</when>
          <what>nobody@mozilla.org</what>
        </update>
        <update>
          <when>1136117422</when>
          <what>asqueella@gmail.com</what>
        </update>
      </report>

【问题讨论】:

  • 您是否必须使用 SAX 解析器?如果您先将结构读入 DOM,则导航结构会容易得多。然后,您可以使用许多实用方法来搜索和处理节点。
  • 不强制您使用 SAX 解析器。我怎么能用 dom 做到这一点
  • SAX 是一个非常底层的解析接口,如果您想使用它来获得性能优势,那么您应该“手动”跟踪您在文档中的位置。你到底想用这个文件做什么?

标签: java xml parsing xml-parsing


【解决方案1】:
String xml= // your xml
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
String expression="//update"; // See XPath
XPathExpression expr = xpath.compile(expression) ; 
    NodeList nodes  = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
for (int k = 0; k < nodes.getLength(); k++) {
// Do what you want with that

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2011-05-31
    • 2015-10-08
    • 2011-04-30
    相关资源
    最近更新 更多