gpt4 book ai didi

Java(JAXP) DocumentBuilder的XML解析差异

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:54 29 4
gpt4 key购买 nike

有什么区别吗

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

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

我应该注意的任何其他要点(例如性能)?

最佳答案

主要区别在于,第一个基于 InputStream 的实现,允许您仅从二进制源读取 XML 内容。界面。即:直接来自文件(使用 FileInputStream )、打开的套接字(来自 Socket.getInputStream() )等。

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

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

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);
}

关于Java(JAXP) DocumentBuilder的XML解析差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4253533/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com