DOM2中的XML
IE可以实现了对XML字符串或XML文件的读取,其他浏览器也各自实现了对XML处理功能。DOM2级在document.implementaion中引入了createDocument()方法。IE9、Firefox、Opera、Chrome和Safari都支持这个方法。
var xmlDom = document.implementation.createDocument("", "root", null);
//1 命名空间 2 跟表亲 3 文档声明
//XML DOM对象已创建,并且提供了root根标签
// alert(xmlDom.documentElement);
// alert(xmlDom.documentElement.tagName);
// alert(xmlDom.getElementsByTagName("root")[0].tagName);
//标准DOM创建节点
var user = xmlDom.createElement("user");
var userText = xmlDom.createTextNode("cpu"); //创建文本
user.appendChild(userText);
xmlDom.documentElement.appendChild(user);
alert(xmlDom.getElementsByTagName("user")[0].firstChild.nodeValue);
//DOM2级的XML DOM对象不支持loadXML(),无法建议直接创建XML字符串
//异步加载
xmlDom.async = true;
xmlDom.onload = function () {
alert(xmlDom.getElementsByTagName('user')[0].tagName);
}
xmlDom.load('abc.xml');
//load()方法只支持firefox浏览器,意义不大
//1,不能使用字符串创建XML,比如IE的loadXML()方法
//2,不能像IE那样,通过.xml序列化XML
//模拟loadXML()方法,可以建议的创建XML字符串
var xmlParser = new DOMParser();
var xmlStr = "<root>\n<user>CPU123</user>\n</root>";
var xmlDom = xmlParser.parseFromString(xmlStr, "text/xml");
alert(xmlDom.getElementsByTagName("user")[0].firstChild.nodeValue);
//模拟.xml属性序列花字符串
var serializer = new XMLSerializer();
var xml = serializer.serializeToString(xmlDom);
alert(xml);