InputSource和InputStream的区别是什么?

8
当我解析xml时,使用InputSource和InputStream有什么区别呢?我在一些教程中看到了这两个例子。 没有使用InputSource:
InputStream is;
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();

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

使用InputSource和不使用InputSource有何区别?
DocumentBuilder db = dbFactory.newDocumentBuilder();
InputSource inputSource = new InputSource(is);
Document document = db.parse(inputSource);

那么性能上有什么区别吗?还是其他方面有区别?

你在谷歌上搜索了你的问题吗?“InputSource和InputStream之间的区别?”第二个答案... - DavidPostill
是的,我看到了,抱歉不知道为什么,我还没有找到这个问题。 - Pauli
1个回答

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

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

1
谢谢提供更多信息 :) 我所寻找的内容在这里找到了。 - Pauli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接