【问题标题】:how to parse xml document in java using SAX approach如何使用 SAX 方法在 java 中解析 xml 文档
【发布时间】:2009-08-28 15:15:47
【问题描述】:

我想解析一个类似于 HTML 文件的文件。它不完全是一个 html 文件。它可以包含一些用户定义的标签。我事先不知道标签是如何相互嵌套的。标签也可能有属性。 我想我应该使用 SAX 解析器。 java 有内置的 SAX 吗?遇到每个标签可以调用函数吗?

【问题讨论】:

    标签: java xml parsing


    【解决方案1】:

    使用以下软件包, java.io,javax.xml.parsers,org.xml.sax.

    SAXParserFactory spf = SAXParserFactory.newInstance();
    XMLReader reader = null;
    
      SAXParser parser = spf.newSAXParser();
      reader = parser.getXMLReader();
    
    reader.setContentHandler(new MyContentHandler());
    
    //XMLReader to parse the entire file.
    
      InputSource is = new InputSource(filename);
      reader.parse(is);
    

    // 实现ContentHandler的方法

    class MyContentHandler implements ContentHandler {
    }
    

    【讨论】:

      【解决方案2】:

      我认为您应该改用StAX,它比SAX 更快、更容易使用。它是 Java SE 6 的一部分。

      【讨论】:

      • 我不同意它更容易使用。 SAX 中的 startElement() 本质上传递给您一个属性映射。否则,您必须编写一段更复杂的代码才能从 StAX 获取此信息。
      • 另一方面,StAX 允许您使用简单的递归下降解析器解析 XML 文档,其中调用堆栈与元素堆栈匹配。使用 SAX,您必须编写状态机,这需要更多样板文件,至少我认为比使用 util 方法将 StAX 光标中的属性读取到地图中更难。
      【解决方案3】:

      SAX 最初只是 Java,所以是的,Java 有一个内置的 SAX parser。这仅在您的文档格式正确时才有效。

      【讨论】:

        猜你喜欢
        • 2017-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多