Я пытаюсь проанализировать файл из Интернета на 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 пытается проанализировать сжатый поток .
Есть ли способ сначала распаковать поток? Есть ли другие идеи?