陋室铭
永远也不要停下学习的脚步(大道至简至易)

解析 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。
例子:解析远端 XML
GM_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 的标
题,并在对话框中显示。
posted on 2006-10-14 16:33  宏宇  阅读(675)  评论(0编辑  收藏  举报