首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DocumentBuilder (JAXP) XML解析的差异

DocumentBuilder (JAXP) XML解析的差异
EN

Stack Overflow用户
提问于 2010-11-23 07:00:42
回答 1查看 3.3K关注 0票数 8

有什么区别吗

  1. DocumentBuilder.parse(InputStream)
  2. DocumentBuilder.parse(InputSource)

我只能发现,对于第一种情况,解析器从流中检测编码,因此更安全,而在后一种情况下,我不确定是否需要设置编码。

还有什么其他的问题(比如表现)我应该知道?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-23 15:18:35

主要区别在于,第一种方法允许您根据InputStream接口的实现只从二进制源读取XML内容。直接来自文件(使用FileInputStream)、打开的套接字(来自Socket.getInputStream())等。

第二种方法是DocumentBuilder.parse(InputSource),它也允许您从二进制源(即InputStream impl) 和从字符源(Reader实现)读取数据。因此,使用这个字符串可以使用XML (使用StringReader),也可以使用BufferedReader

使用第二种方法,您已经有机会处理InputStreams,而第一种方法是一种快捷方式,所以当您有一个InputStream时,您不需要创建一个新的InputSource。实际上,InputStream方法的源代码是:

代码语言:javascript
复制
public Document parse(InputStream is)
    throws SAXException, IOException {
    if (is == null) {
        throw new IllegalArgumentException("InputStream cannot be null");
    }

    InputSource in = new InputSource(is);
    return parse(in);
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4253533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档