私はGoogleのAPIを使用して地図を表示するアプリケーションビルドしています。ユーザー入力アドレスを使用して、APIにクエリを送信して目的地までの道順を問い合わせます。 APIは私にXMLレスポンスを返します。このXMLレスポンスは、私の方向オブジェクトを構築し、ユーザに情報を表示するために解析します。java xpathは予期しない値を返します
すべてが機能しますが、xpath.evaluate()
の一部が期待通りに機能しません。たとえば、この応答:
私が使用:
NodeList legList = (NodeList) xpath.evaluate("//route/leg",
response, XPathConstants.NODE);
はさえ//leg
は、右の仕事をすればよいですか?
legList.getLength()を実行すると、私には23が返されますが、レスポンスには2つの脚しかありません。なぜこの奇妙な行動が起こっているのか知っていますか?私はXML Namespaceについて読んでいますが、答えが何も含まれていなくても名前空間を明示すべきかどうかはまだ分かりません。このような:
与えられた応答のために、「// leg」と「// route/leg」は同等です。すべての可能な回答で必ずしも同等であるとは限りません。 '/ route/leg'を試しましたか? 'legList'のノードは何ですか? – beerbajay
私のJVM(Sun JDK1.6.0_14)で、XPathConstants.NODEを要求すると、com.sun.org.apache.xerces.internal.dom.DeferredElementImplというタイプが返されます。これもNodeListインターフェイスを実装しています。だから私はそれがXMLで見つけた最初の要素の子ノードの数として長さを報告していると思います。 –