DOM2级中的XML

Posted 慕雪琳鸢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DOM2级中的XML相关的知识,希望对你有一定的参考价值。

针对非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的主要内容,如果未能解决你的问题,请参考以下文章

父级中的Java方法占位符在子级中使用[重复]

父级中的div高度溢出[重复]

仅展开父级中的子级 div

为啥Vue会更新父级中的变量-未使用事件

javascript 从父级中的子级渲染节点更新

从父级中的子级访问元素标记名