例 4.27. 将任意字符串解析为 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 字符串,和内容类型。两者都是必需的。
|
|
这个模式非常强大,如果把它与 GM_xmlhttpRequest 函数结合起来解析远程源的 XML。
例 4.28. 解析远程源的 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 得到条目列表。再对每个条目做 DOM 查询,获得条目的标题(title),然后在对话框中显示出来。
实例教学 →