The main difference is that the first one allows you to read your XML content only from binary sources, based on the implementations of the InputStream
interface. I.e: directly from a file (using a FileInputStream
), an open Socket (from Socket.getInputStream()
), etc.
The second one, DocumentBuilder.parse(InputSource)
, allows you to read data from binary sources too (this is, an InputStream
impl) and from character sources (Reader
implementations). So, with this one you can use an XML String (using a StringReader
), or a BufferedReader
.
While with the second method you already have the chance to handle InputStreams
, the first one is a kind of shortcut, so when you have an InputStream
you don't need to create a new InputSource
. In fact, the source code of the InputStream
method is:
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);
}