InputSource和InputStream有什么区别? [重复]

问题描述 投票:3回答:1

这个问题在这里已有答案:

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

没有InputSource:

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

那么性能有什么不同吗?还是别的什么?

java xml xml-parsing inputstream
1个回答
7
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.