Основное отличие состоит в том, что первое позволяет вам читать ваш XML-контент только из двоичных источников, основываясь на реализациях интерфейса InputStream
. Т.е.: непосредственно из файла (используя FileInputStream
), открытого сокета (из Socket.getInputStream()
) и т. Д.
Второй, DocumentBuilder.parse(InputSource)
, позволяет также читать данные из двоичных источников (это InputStream
impl) и из символьных источников ( Reader
реализации). Таким образом, с этим вы можете использовать строку XML (используя StringReader
) или BufferedReader
.
Хотя со вторым методом у вас уже есть шанс обработать InputStreams
, первый - это своего рода ярлык, поэтому, когда у вас есть InputStream
, вам не нужно создавать новый InputSource
. Фактически, исходный код метода InputStream
:
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);
}