我试图用我的Greasemonkey脚本做的是:
阅读一些远程XML文档;
将其转换为XML对象;
然后使用XPath获取其中的元素。
getElementsByTagName(TagName)方法适用于我的XML对象,但 evaluate(“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);
}
});
答案 0 :(得分:1)
IIRC,.data
属性不会出现在每种搜索中。
可能 需要使用:
var snapEntriesXpath = xmlDoc.evaluate (
"//entry//text()", xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
);
但其他一些问题可能会起作用。如果不这样做,(1)链接到确切的XML文件;必要时使用pastebin.com。 (2)报告Firefox的错误控制台( Ctrl Shift J )报告。