我建立了一個應用程序,它顯示了一個與谷歌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