JavaScript 【非IE DOM2级XML】

时间:2022-01-29 09:23:46

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);