码迷,mamicode.com
首页 > 其他好文 > 详细

DOM2级中的XML

时间:2018-01-26 18:41:42      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:str   imp   demo   strong   序列   版本   async   opera   1.5   

针对非IE浏览器的其他浏览器,即属于DOM2级浏览器(opera、firefox、chrome、safair),DOM2级使用document.implementation对象中的creatDocument()方法来创建xmlDom。

 

1、创建xmlDom

var xmlDom = document.implementation.creatDocument(‘‘,‘root‘,null);   //创建xmldom,并且提供了跟标签root

第一个参数:命名空间;

第二个参数:xml文件的跟标签;

第三个参数:文档声明。

 

2、使用标准的DOM创建节点

var xmlDom = document.implementation.creatDocument(‘‘,‘root‘,null);

var user = xmlDom.creatElement(‘user‘);

xmlDom.appendChild(user);

var userText = xmlDom.creatTextNode(‘lql‘);

user.appendChild(userText);

PS:DOM2级中的xmlDom无法通过loadxml()方法直接用字符串创建xml文档。支持load()方法载入外部文件

 

一:同步加载文件,使用load()方法

var xmlDom = document.implementation.creatDocument(‘‘,‘root‘,null);

xmlDom.async = false;

var user = xmlDom.creatElement(‘user‘);

xmlDom.appendChild(user);

xmlDom.load(‘demo.xml‘);

alert(xmlDom.getElementByTagName(‘user‘)[0].tagName);    //输出user

PS:DOM2级没有xml属性进行序列化排序

 

二:异步加载文件,使用load()方法

var xmlDom = document.implementation.creatDocument(‘‘,‘root‘,null);

xmlDom.async = true;

xmlDom.onload = function(){

  alert(xmlDom.getElementByTagName(‘user‘)[0].textContent);

}

xmlDom.load("demo.xml");

PS:load()方法只支持firefox浏览器和新版本的opera浏览器,其他浏览器不支持。

 

问题总结:

1、不能使用字符串来创建xml,比如类似IE中的loadxml()方法;

2、不能使用xml属性序列化字符标签

 

解决问题1://模拟loadxml()方法创建xml字符串

var xmlParse = new DOMParse();

var xmlStr = ‘<root><user>lql</user></root>‘;

var xmlDom = xmlParse.parseFromString(xmlStr,‘text/xml‘);

alert(xmlDom.getElementByTagName(‘user‘)[0].tagName);

 

解决问题2://模拟xml属性序列化字符标签

var serializer = new XMLSerializer();

var xml = serializer.serializerToString(xmlDom);

alert(xml);

 

DOM2级中的XML

标签:str   imp   demo   strong   序列   版本   async   opera   1.5   

原文地址:https://www.cnblogs.com/liangqilin/p/8360538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!