В чем разница между InputSource и InputStream? [Дубликат]

1

В чем разница между использованием InputSource и InputStream при анализе xml. Я видел оба примера в некоторых учебниках

без 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
    ты гуглил свой вопрос? "Разница между InputSource и InputStream?" второй ответ ...
  • 0
    да, извините, не знаю почему, я не нашел этот вопрос
Теги:
xml-parsing
inputstream

1 ответ

3
Лучший ответ

InputSource может читать из InputStream, но он также может считывать с Reader или напрямую с URL-адреса (открывая сам поток). Анализ из InputStream эквивалентен синтаксическому анализу из new InputSource(theStream).

Если файл, который вы хотите проанализировать, ссылается на внешний DTD или любые внешние объекты по относительным URI, тогда вы не можете его разобрать из простого InputStream, поскольку анализатор не знает базовый URL, который он должен использовать для разрешения этих относительных путей, В этом случае вам нужно будет построить InputSource из потока и использовать setSystemId чтобы установить базовый URI, а затем проанализировать этот источник, а не просто передавать поток непосредственно в синтаксический анализатор.

  • 1
    Спасибо за дополнительную информацию :) То, что я искал, я нашел здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню