10

xpathクエリでxmlノードを見つけようとしています。しかし、私はそれを機能させることができません。Firefox の結果は常に「未定義」であり、chrome はエラー コードをスローします。

<script type="text/javascript">

var xmlString = '<form><name>test</name></form>';
var doc = new DOMParser().parseFromString(xmlString,'text/xml');

var result = doc.evaluate('/form/name', doc, 
                          null, XPathResult.ANY_TYPE, null);

alert(result.stringValue);

</script>

このコードの何が問題になっていますか?

4

2 に答える 2

12

なぜこのエラーが発生したのかわかりませんが、に変更XPathResult.ANY_TYPEするXPathResult.STRING_TYPEと動作します (firefox 3.6 でテスト済み)。

見る:

var xmlString = '<form><name>test</name></form>';
var doc = new DOMParser().parseFromString(xmlString,'text/xml');
var result = doc.evaluate('/form/name', doc, null, XPathResult.STRING_TYPE, null);
alert(result.stringValue); // returns 'test'

jsfiddleを参照してください。


詳細:

メソッドの 4 番目のパラメーターevaluateは、必要な結果の種類を指定する整数です (参照)。整数、文字列、任意の型など、多くの型がありますこのメソッドは、多くのプロパティを持つXPathResultを返します。

プロパティ (numberValue、stringValue) を評価で使用されるプロパティと一致させる必要があります。

any typeで動作しなかった理由がわかりませんstring value

于 2010-08-29T21:51:39.250 に答える
3

XPathResult.ANY_TYPExpath 式 のノード セットを返すため、/form/nameノードresult.stringValueセットを文字列に変換する際に問題が発生します。この場合、使用できますresult.iterateNext().textContent

ただし、 のような式を使用するとcount(/form/name)数値が返され、その場合は を使用して数値を取得XPathResult.ANY_TYPEできます。result.numberValue

https://developer.mozilla.org/en/DOM/document.evaluate#Result_typesでのより詳細な説明

于 2012-04-14T02:14:38.087 に答える