InputSource 和 InputStream 有啥区别? [复制]

Posted

技术标签:

【中文标题】InputSource 和 InputStream 有啥区别? [复制]【英文标题】:What is the difference between InputSource and InputStream? [duplicate]InputSource 和 InputStream 有什么区别? [复制] 【发布时间】:2014-10-15 07:42:28 【问题描述】:

解析xml时使用InputSource和InputStream有什么区别。 我在一些教程中看到了这两个例子

没有输入源:

InputStream is;
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbFactory.newDocumentBuilder();
Document document = db.parse(is);

和InputSource,区别在哪里

DocumentBuilder db = dbFactory.newDocumentBuilder();
InputSource inputSource = new InputSource(is);
Document document = db.parse(inputSource);

那么性能有什么不同吗?还是在其他方面?

【问题讨论】:

你用谷歌搜索过你的问题吗? “InputSource 和 InputStream 之间的区别?”第二个答案... 是的,我做到了,抱歉不知道为什么,我没有找到this问题 【参考方案1】:

InputSource 可以从 InputStream 读取,但它也可以从 Reader 读取或直接从 URL(打开流本身)读取。从InputStream 解析等同于从new InputSource(theStream) 解析。

如果您要解析的文件通过相对 URI 引用了外部 DTD 或任何外部实体,那么您无法从普通的 InputStream 解析它,因为解析器不知道它应该使用的基本 URL解决这些相对路径。在这种情况下,您需要从流中构造一个 InputSource 并使用 setSystemId 设置基本 URI,然后从该源解析,而不是简单地将流直接传递给解析器。

【讨论】:

感谢您提供更多信息 :) 我在找什么我找到了here

以上是关于InputSource 和 InputStream 有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 inputsource 转换为 inputstream 并将其作为参数提供给 stringreader?

发生了啥:org.apache.ws.commons.schema.XmlSchemaCollection.read(InputSource)?

避免在 Java 中使用 XPath 重复实例化 InputSource

spring IOC篇二:xml的核心逻辑处理(doLoadBeanDefinitions(inputSource, encodedResource.getResource()))

libgdal.so.20:未定义符号:_ZN11xercesc_3_111InputSource11setEncodingEPKt

InputStream,InputStreamReader和Reader的关系