DOM级XML操作方法

// DOM2级XML
// 创建XMLDOM对象
var xmlDom = document.implementation.createDocument('','root',null); //XML DOM对象已创建,并且提供了root根标签
//alert(xmlDom);
//alert(xmlDom.documentElement.tagName);//获取根标签
alert(xmlDom.getElementsByTagName('root')[0].tagName);//获取根标签第二种方法

   //使用标准DOM去创建节点
   var user = xmlDom.createElement('user');
   xmlDom.documentElement.appendChild('user');
   alert(xmlDom.getElementsByTagName('user')[0].tagName);


   //PS:DOM2级的XML DOM对象是不支持loadXML()方法,无法简易的直接创建XML字符串

//同步加载xml文件
//PS :有没有load()方法,载入外部XML文件
var xmlDom = document.implementation.createDocument('','root',null);
xmlDom.async=false; //false是同步 true是异步 默认异步
xmlDom.load('demo.xml');//载入外部XML文件
// alert(xmlDom.xml);//输出序列化后的XML字符串 报错
alert(xmlDom.getElementsByTagName('user')[0].tagName);
alert(xmlDom.getElementsByTagName('user')[0].firstChild.nodeValue);
alert(xmlDom.getElementsByTagName('user')[0].textContent);//相当于XHTML节点中的innerHTML w3c写法 IE不支持

    //PS:DOM2级是没有.xml属性来序列化XML字符的

//异步加载xml文件

var xmlDom = document.implementation.createDocument('','root',null);
xmlDom.async=true;
xmlDom.onload=function(){ //异步加载通过onload即可,类似IE中的就绪状态事件
alert(xmlDom.getElementsByTagName('user')[0].textContent);
};
xmlDom.load('demo.xml');
//PS:load()方法只支持Firefox浏览器和新版本的Opera浏览器,其它浏览器不支持

//问题
//1 不能简易 的使用字符串来创建XML,比如类似与IE的loadXML()方法。
//2 不能够像IE中那样 通过.xml序列化XML字符串输出

//DOMParser类型
//模拟loadXML()方法,可以简易的创建XML字符串
var xmlParser = new DOMParser(); //创建DOMParser对象
//alert(xmlParser);
var xmlStr='lee'; //xml字符串
var xmlDom =xmlParser.parserFromString(xmlStr,'text/xml');//XMLDocumentXMLDOM
alert(xmlDom.getElementsByTagName('user')[0].tagName);

//模拟.xml属性序列化字符串
var serializer = new XMLSerializer();
var xml = serializeToString(xmlDom);
alert(xml);

你可能感兴趣的:(DOM级XML操作方法)