[英]java xpath return unexpected values
I'm builind an application which shows a map with the google api. 我正在构建一个显示谷歌api地图的应用程序。 Using the user input address, I query the API for directions to a destination.
使用用户输入地址,我查询API以获取到目的地的路线。 The API returns me a XML response which I parse to build my directions objects and show informations to the user.
API返回一个XML响应,我解析它以构建我的方向对象并向用户显示信息。
Everything works but some of my xpath.evaluate()
use do not work as I expect. 一切正常,但我的一些
xpath.evaluate()
使用不起作用。 For example this response : 例如这个回复:
When I use : 我用的时候:
NodeList legList = (NodeList) xpath.evaluate("//route/leg",
response, XPathConstants.NODE);
Even //leg
should do the job right? 甚至
//leg
应该做对吗?
When I do a legList.getLength(), it gives me 23 but there are only two leg in the response. 当我执行legList.getLength()时,它给了我23但响应中只有两条腿。 Do you know why this strange behavior is happening?
你知道为什么会发生这种奇怪的行为吗? I read about XML Namespace but I still don't know what to do, should I specidfy a namespace even if the answer doesn't contain any, and if yes, why do I have to?
我读过有关XML命名空间的内容,但我仍然不知道该怎么做,即使答案中没有任何内容,我是否应该指定命名空间,如果是,我为什么要这样做?
如果你想要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);
You need to use 你需要使用
NodeList legList = (NodeList) xpath.evaluate(expr,
xml, XPathConstants.NODESET);
try this code. 试试这段代码。
NodeList legList = (NodeList) xpath.evaluate("/route/leg",
response, XPathConstants.NODESET);
NODESET is return the NodeList while XPathConstants.NODE is return single Object. NODESET返回NodeList,而XPathConstants.NODE返回单个Object。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.