解析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);
那么性能有什么不同吗?还是别的什么?
答案 0 :(得分:6)
InputSource
可以从InputStream
读取,但也可以从Reader
读取或从URL直接读取(打开流本身)。从InputStream
解析相当于从new InputSource(theStream)
进行解析。
如果要解析的文件通过相对URI引用外部DTD或任何外部实体,那么您无法从普通InputStream
解析它,因为解析器不知道它应该用来解析这些相对路径的基本URL。在这种情况下,您需要从流构造InputSource
并使用setSystemId
设置基URI,然后从该源解析,而不是简单地将流直接传递给解析器。