Java Xpath возвращает неожиданные значения - PullRequest
0 голосов
/ 13 марта 2012

Я строю приложение, которое показывает карту с API Google. Используя введенный пользователем адрес, я запрашиваю у API указания относительно места назначения. API возвращает мне XML-ответ, который я анализирую для построения объектов моих направлений и отображения информации пользователю.

Все работает, но некоторые из моих xpath.evaluate() не работают, как я ожидаю. Например этот ответ:

Ответ Google Maps

Когда я использую:

NodeList legList = (NodeList) xpath.evaluate("//route/leg",
                    response, XPathConstants.NODE);

Даже //leg должен делать работу правильно?

Когда я выполняю legList.getLength (), он дает мне 23, но в ответе есть только две ноги. Знаете ли вы, почему это странное поведение происходит? Я читал о XML Namespace , но я все еще не знаю, что делать, если я укажу пространство имен, даже если ответ не содержит ни одного, и если да, почему я должен?

Ответы [ 3 ]

1 голос
/ 13 марта 2012

Вам нужно использовать

    NodeList legList = (NodeList) xpath.evaluate(expr,
            xml, XPathConstants.NODESET);
1 голос
/ 13 марта 2012

Если вы хотите, чтобы NodeList использовал XPathConstants.NODESET вместо XPathConstants.NODE (проверьте соответствие: http://docs.oracle.com/javase/6/docs/api/javax/xml/xpath/XPathConstants.html#NODESET) вот так:

NodeList legList = (NodeList) xpath.evaluate("//route/leg", response, XPathConstants.NODESET);
0 голосов
/ 13 марта 2012

попробуйте этот код.

NodeList legList = (NodeList) xpath.evaluate("/route/leg",
                response, XPathConstants.NODESET);

NODESET возвращает NodeList, а XPathConstants.NODE возвращает один объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...