(Java) Ошибка при синтаксическом разборе XML-данных маршрутов Google с использованием XPath

Я пытаюсь проложить маршрут между двумя точками, используя api маршрутов Google.

Я попытался проанализировать возвращенный XML с помощью разных методов, но всегда получаю следующую ошибку.

javax.xml.xpath.XPathExpressionException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Содержание не доступно в прологе.

// код отредактирован


person Simon    schedule 14.01.2015    source источник
comment
Возможно, перед XML-объявлением стоят символы? Пожалуйста, покажите свой код и XML-документ.   -  person Mathias Müller    schedule 14.01.2015
comment
Спасибо за ответ, я добавил код в вопрос.   -  person Simon    schedule 14.01.2015
comment
Вам не приходило в голову, что вы пытаетесь анализировать JSON, как если бы это был XML? Это загружаемая страница - это определенно не XML, и XPath не может использоваться для навигации по нему.   -  person Mathias Müller    schedule 14.01.2015
comment
Замените json в http://maps.googleapis.com/maps/api/directions/json на xml, и он должен вернуть XML.   -  person geert3    schedule 14.01.2015
comment
Ой, совсем не заметил. URL-адрес был предоставлен моим наставником, и он сказал мне использовать синтаксический анализ XML, поэтому я не подумал его проверять. Спасибо. Замена JSON на XML устранила ошибку, спасибо.   -  person Simon    schedule 14.01.2015


Ответы (1)


Теперь, когда мы установили, что это действительно единственная проблема, я добавляю ее в качестве ответа.

Запрашиваемая страница - это не XML, а JSON. Синтаксический анализатор SAX возвращает ошибку, потому что входные данные синтаксического анализатора не являются правильно сформированным XML-документом. Этого не должно быть, поскольку это действительный JSON.

Как предлагает @ geert3, просто замените json на xml в URL-адресе:

http://maps.googleapis.com/maps/api/directions/xml?sensor=false&origin=nottingham&destination=derby

Или же проанализируйте JSON с помощью парсера JSON и используйте JSONPath вместо XPath для запроса.

person Mathias Müller    schedule 14.01.2015