java xpath返回意外值

时间:2012-03-13 13:32:59

标签: java xml xpath

我正在构建一个显示带有google api的地图的应用程序。使用用户输入地址,我查询API以获取到目的地的路线。 API返回一个XML响应,我解析它以构建我的方向对象并向用户显示信息。

一切正常但我的一些xpath.evaluate()使用不起作用。例如,这个回复:

Google Maps Response

当我使用时:

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

即使//leg也可以正常工作吗?

当我执行legList.getLength()时,它给了我23但是响应中只有两条腿。你知道为什么会发生这种奇怪的行为吗?我读到了XML Namespace,但我仍然不知道该怎么做,即使答案中没有任何名称,我是否应该指定名称空间,如果是,我为什么要这样做?

3 个答案:

答案 0 :(得分:1)

如果你想要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);

答案 1 :(得分:1)

您需要使用

    NodeList legList = (NodeList) xpath.evaluate(expr,
            xml, XPathConstants.NODESET);

答案 2 :(得分:0)

试试这段代码。

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

NODESET返回NodeList,而XPathConstants.NODE返回单个Object。