1
遠いXMLドキュメントから要素を取得するためにXPathを使用すると、次のとおりです。グリースモンキー:Imは私のGreasemonkeyスクリプトを使ってやろうと何
いくつかの遠いXMLドキュメントを読み込みます。
これをXMLオブジェクトに変換します。
XPathを使用して内部の要素を取得します。
getElementsByTagNameの(のTagName)方法は、私のXMLオブジェクトに正常に動作しますが、は( "XPath式")を評価はしていません。助言がありますか?以下のコードを参照してください:
GM_xmlhttpRequest({
method: "GET",
url: "http://www.someserver.com/atom.xml",
onload: function(response) {
if (!response.responseXML) {
var xmlDoc = new DOMParser().parseFromString(response.responseText, "application/xml");
}
// this section works fine and returns the data of the first <entry>..</entry>
var snapEntries = xmlDoc.getElementsByTagName("entry");
alert (snapEntries[0].data);
// this section doesn't work for unknown reason and returns nothing
var snapEntriesXpath = xmlDoc.evaluate("//entry", xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
alert (snapEntriesXpath.snapshotItem(0).data);
}
});
いいえ。それは非暴言XPath評価の理由とは思われません。上記のコードでalert(snapEntries.length)とalert(snapEntriesXpath.snapshotLength)を追加することができます。最初のケースではエントリの数が再計算され、2番目の場合は0が返されます。 – user1199523
XML文書はあなたの考えではなく、 'evaluate'文を編集したものです。このコードは、適切なXML文書で動作します。確認するために再テストしました。 XPathは大文字と小文字を区別します。要求された情報を提供する。 –
OK。 XML文書には何か問題があるはずです(ただし、標準的なブロガーのフィード・アトムです)。まあ、正規表現を使って* response.responseText *を解析する方がはるかに高速です:) – user1199523