【问题标题】:Why DocumentBuilder.parse throws SaxParserException为什么 DocumentBuilder.parse 抛出 SaxParserException
【发布时间】:2014-06-03 11:02:06
【问题描述】:

从 xml 创建 DOM 的典型代码 sn-p 如下:

Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("somefile.xml");

我想知道为什么 parse 方法会抛出 SAXException

我查看了代码,发现 DOMParserparse(InputSource inputSource) 方法最初将这个异常向上抛出。

谁能帮我理解一下,为什么DOM创作需要我们赶上SaxException?是不是有点矛盾?

【问题讨论】:

    标签: java dom sax


    【解决方案1】:

    因为它在内部使用了一些 SAX API。

    请注意,此类重用了 SAX API 中的几个类。这并不要求底层 DOM 实现的实现者使用 SAX 解析器将 XML 文档解析为 Document。它只需要实现使用这些现有 API 与应用程序进行通信。

    http://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/DocumentBuilder.html

    【讨论】:

    • 首先“DOM 使用 SAX 解析器”有点意思。其次,我没有发现在源代码中调用了任何 Handler。所以不确定它是否真的使用传统的 sax 解析器。您能否突出显示一些确认 DOM 在幕后使用 SAX 解析器的代码?
    • 我无法使用 SAX 解析器找到代码,但我查看了文档并发现:“请注意,这个类重用了 SAX API 中的几个类。这不需要底层 DOM 实现使用 SAX 解析器将 XML 文档解析为 Document。它只需要实现使用这些现有 API 与应用程序通信。我会把它添加到答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2021-12-20
    • 2011-01-02
    • 2020-02-01
    • 2021-03-05
    • 2021-03-19
    • 2014-01-24
    相关资源
    最近更新 更多