实现DOM2级XML处理功能的浏览器为IE9及更高版本,Firefox,Safari,Chrome,Opera这些现代浏览器。
创建xml文档对象
var xmldom=document.implementation.createDocument('',"root",null);
特点:参数序列分别为:(命名空间,xml文档根标签,文档声明)
因为命名空间很难管理,所以不设置命名空间,xml没有文档声明,但是也必须要传递参数。载入xml
dom2级不支持loadXML()方法,也不支持序列化.xml
,但是提供.load
方法载入xml文档,但是支持这个方法的只有火狐浏览器以及欧朋浏览器。载入xml文档
load
var xmldom=document.implementation.createDocument('',"root",null);
xmldom.async=true;
xmldom.onload=function(){
alert(xmldom.documentElement.getElementsByTagName('user')[0].firstChild.nodeValue)
}
xmldom.load("demo.xml");
特点:同样加载方式还是异步加载,只是不用再去判断文档就绪状态,而是直接使用onload事件来进行。DOMParser()代替加载字符串的loadXML()
该方法是Firefox提出的,后来其他浏览器也都支持了,用来弥补DOM2级不提供加载xml字符串的办法。
var parser=new DOMParser();
var xmldom=parser.parseFromString('<root><user>dudu</user></root>','text/xml');
alert(xmldom.documentElement.firstChild.tagName)
特点:
1、第一步需要先创建一个DOMParser
对象,然后调用该对象的parseFormString()
2、参数:第一个参数是格式良好的xml字符串,第二个参数是文档类型。XMLSerializer()代替
.xml
序列化的方法
var serializer=new XMLSerializer();
var xml=serializer.serializeToString(xmldom);
alert(xml);
特点:
1、第一步需要创建一个XMLSerializer
对象,然后调用该对象的serializeToString()
2、参数:xml文档对象错误解析
当parser.parseFromString
根据传入的xml字符串进行解析,出现错误时,会从parser.parseFromString
中返回一个Document对象,这个对象的的文档元素是<parsererror>,里面包含着错误信息
var parser=new DOMParser();
var xmldom=parser.parseFromString('<root><user>dudu<user></root>','text/xml');
if(!xmldom.getElementsByTagName('parsererror').length)
{
var serializer=new XMLSerializer();
var xml=serializer.serializeToString(xmldom);
alert(xml);
}else{
alert(xmldom.getElementsByTagName('parsererror')[0].textContent)
}
特点:
1、判断一下返回的xmldom对象是否包含parsererror就可以,如果包含则说明,解析出错。
2、.textContent是xml的特有属性,类似于innerhtml是html的特有属性似的。