我正在构建一个显示带有google api的地图的应用程序。使用用户输入地址,我查询API以获取到目的地的路线。 API返回一个XML响应,我解析它以构建我的方向对象并向用户显示信息。
一切正常但我的一些xpath.evaluate()
使用不起作用。例如,这个回复:
当我使用时:
NodeList legList = (NodeList) xpath.evaluate("//route/leg",
response, XPathConstants.NODE);
即使//leg
也可以正常工作吗?
当我执行legList.getLength()时,它给了我23但是响应中只有两条腿。你知道为什么会发生这种奇怪的行为吗?我读到了XML Namespace,但我仍然不知道该怎么做,即使答案中没有任何名称,我是否应该指定名称空间,如果是,我为什么要这样做?
答案 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。