解析 XML
Firefox 可以自动的将当前页面解析为 DOM(文本对象模型), 您也可以通过 XML 语句(可以是您自己编写的,也可以是您从远端主机得到的)来创建DOM。
例子:将一个字符串解析为 XML
var xmlString = '<passwd>' + ' <user id="101">' + ' <login>mark</login>' + ' <group id="100"/>' + ' <displayname>Mark Pilgrim</displayname>' + ' <homedir>/home/mark/</homedir>' + ' <shell>/bin/bash</shell>' + ' </user>' + '</passwd>' var parser = new DOMParser(); var xmlDoc = parser.parseFromString(xmlString, "application/xml"); 在这里,关键是 DOMParser 这个对象,它包含 parseFromString 这个方法。 (它也包含其他的方 法,但在这里并不要使用它们。) parseFromString 有两个参数:一是将要解析为 XML 的字符串, 二是内容的类型。这两个参数都是必要的。
对象DOMParser 的 parseFromString 方法将内容的类型作为它的第二个参数。它的值可以是:application/xml, application/xhtml+xml, 以及 text/xml。 出于某个原因(在这里不适合讨论),您应该一直使用 application/xml 作为参数的值。
当您将它与 GM_xmlhttpRequest 函数结合起来使用时,它可以解析远端的 XML。
例子:解析远端 XMLGM_xmlhttpRequest({ method: 'GET', url: 'http://greaseblog.blogspot.com/atom.xml', headers: { 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey/0.3', 'Accept': 'application/atom+xml,application/xml,text/xml', }, onload: function(responseDetails) { var parser = new DOMParser(); var dom = parser.parseFromString(responseDetails.responseText, "application/xml"); var entries = dom.getElementsByTagName('entry'); var title; for (var i = 0; i < entries.length; i++) { title = entries[i].getElementsByTagName('title')[0].textContent; alert(title); } } }); 这段代码将会载入[http://greaseblog.blogspot.com/atom.xml Atom feed],将它解析成 DOM, 然后查询 DOM 获得 entries 列表。对每个 entry, 它再次查询 DOM ,获得 entry 的标 题,并在对话框中显示。