Вот XML Я пытаюсь разобрать: http://realtime.catabus.com/InfoPoint/rest/routes/get/51Синтаксический XML в Android без объявления XML с помощью SAX
@Override
protected Void doInBackground(String... Url) {
try {
URL url = new URL(Url[0]);
DocumentBuilderFactory dbf = DocumentBuilderFactory
.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
// Download the XML file
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
// Locate the Tag Name
nodelist = doc.getElementsByTagName("VehicleLocation");
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
Во время выполнения, когда он достигает этой линии: DocumentBuilder db = dbf.newDocumentBuilder();
я получаю следующее сообщение об ошибке:
Unexpected token (position:TEXT {"RouteId":51,"[email protected]:1298 in [email protected])
Кажется, что-то связано с кодировкой. Мой угадывает в том, что это потому, что XML не отменяет кодировку, но, возможно, нет.
Есть ли способ указать кодировку в коде (я не могу изменить сам XML)?
Спасибо!
EDIT: Это, похоже, происходит только при анализе XML из URL-адреса. Сохранение файла локально, похоже, отлично работает.
Линия DocumentBuilder db = dbf.newDocumentBuilder() выполняется * до * к документу. Это настоящий код? – mjn
@mjn, есть. Есть ли проблема с этим? db нужно инициализировать до того, как db.parse можно называть – kojak
Я бы удалил часть 'Во время выполнения, когда она достигает этой строки: DocumentBuilder db = dbf.newDocumentBuilder();' – mjn