我建立了一个应用程序,它显示了一个与谷歌API的地图。使用用户输入地址,我查询指向目的地的API。该API返回给我一个XML响应,我将解析这些响应以构建我的路线对象并向用户显示信息。java xpath返回意外值
一切正常,但我的一些xpath.evaluate()
使用如我所料不工作。例如这样的响应:
当我使用:
NodeList legList = (NodeList) xpath.evaluate("//route/leg",
response, XPathConstants.NODE);
即使//leg
应该做的工作吗?
当我做了legList.getLength(),它给了我23,但只有两个腿的响应。你知道为什么会发生这种奇怪的行为吗?我读了XML Namespace,但我仍然不知道该怎么办,即使答案不包含任何命名空间,我是否应该指定一个命名空间,如果是的话,为什么我必须?
对于给定的响应'// leg'和'// route/leg'是等价的。在所有可能的反应中,它们不一定相同。你尝试过'/ route/leg'吗? 'legList'中的节点是什么? – beerbajay 2012-03-13 13:52:02
在我的JVM(孙JDK1.6.0_14),请求XPathConstants.NODE,返回类型:com.sun.org.apache.xerces.internal.dom.DeferredElementImpl - 这也实现了节点列表界面。所以我相信它报告的长度是它在Xml中找到的第一个元素的子节点数。 –
2012-03-13 14:43:07