Greasemonkey:使用XPath从远程XML文档中获取元素

时间:2012-02-12 14:38:26

标签: xpath xml-parsing greasemonkey

我试图用我的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);
    }
});

1 个答案:

答案 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 )报告。