Я пытаюсь проанализировать файл из Интернета на Android, используя метод DOM.
Код, о котором идет речь:
try {
URL url = new URL("https://www.beatport.com/en-US/xml/content/home/detail/1/welcome_to_beatport");
InputSource is = new InputSource(url.openStream());
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(is);
document.getDocumentElement().normalize();
} catch(Exception e) {
Log.v(TAG, "Exception = " + e);
}
Но я получаю следующее исключение:
V/XMLParseTest1( 846):Exception = org.xml.sax.SAXParseException: name expected (position:START_TAG <null>@2:176 in java.io.InputStreamReader@43ea4538)
Файл передается мне в архиве. Я проверил объект is
в отладчике, и его длина составляет 6733 байта (то же самое, что длина содержимого файла в заголовках ответа), однако, если я сохраняю файл на жесткий диск из браузера, его размер составляет 59114 байта , Кроме того, если я загружаю его на свой собственный сервер, который не распаковывает XML-файлы, когда он их обслуживает, и задаю URL, код работает нормально.
Я предполагаю, что происходит то, что Android пытается проанализировать сжатый поток.
Есть ли способ сначала распаковать поток? Есть еще идеи?