微软在javascript中引入了ActiveX对象中的ActiveXObject类
使用这个函数就可以保证调用到最新版本的XML DOM版本
function createXMLDOM(){
var arrSignatures=["MSXML2.DOMDcument.5.0","MSXML2.DOMDcument.4.0","MSXML2.DOMDcument.3.0","MSXML2.DOMDcument","Microsoft.XmlDom"];
for(var i=0;i<arrSignatures.length;i++){
try{
var oXmlDom=new ActiveXObject(arrSignatures[i]);
return oXmlDom;
}
catch(e){
}
}
throw new Error("没有安装MSL")
}
调用的这个函数来为IE浏览器来创建XMLDOM对象,但是注意的是使用的额时候注意的是,在使用这函数之前,必须判断浏览器,否则在这段函数在其他浏览中会出错
function createXMLDOM(){
var arrSignatures=["MSXML2.DOMDcument.5.0","MSXML2.DOMDcument.4.0","MSXML2.DOMDcument.3.0","MSXML2.DOMDcument","Microsoft.XmlDom"];
for(var i=0;i<arrSignatures.length;i++){
try{
var oXmlDom=new ActiveXObject(arrSignatures[i]);
return oXmlDom;
}
catch(e){
}
}
throw new Error("没有安装MSL")
}
function isload(){
if(document.all){ //判断是否为ie浏览器,因为这个属性只有在ie中才会出现
//创建了最新版本的XML对象,但是注意的是这段IE方式创建xmlDom对象的方式会在其它浏览器出错,所以一定要进行浏览器的检测
var oXMLDom=createXMLDOM();
}
}
载入的方式
function isload(){
if(document.all){ //判断是否为ie浏览器,因为这个属性只有在ie中才会出现
//创建了最新版本的XML对象,但是注意的是这段IE方式创建xmlDom对象的方式会在其它浏览器出错,所以一定要进行浏览器的检测
var oXMLDom=createXMLDOM();
//直接载入的是XMl字符串
oXMLDom.loadXML("<root><child/></root>")
//从服务器上载入XML文件(但是只能载入与包含javascript的页面存储于同一服务器上的文件)
}
}
载入的模式:
同步载入:javascript代码会等待文件完全载入后才继续执行代码
异步载入:不会等待文件载入完成,继续执行自己的代码,使用事件处理函数来判断是否载入完成
function isload(){
//判断浏览器window.ActiveXObject 只有IE支持
if(document.all){ //判断是否为ie浏览器,因为这个属性只有在ie中才会出现
//创建了最新版本的XML对象,但是注意的是这段IE方式创建xmlDom对象的方式会在其它浏览器出错,所以一定要进行浏览器的检测
var oXMLDom=createXMLDOM();
//直接载入的是XMl字符串
//oXMLDom.loadXML("<root><child/></root>");
//从服务器上载入XML文件(但是只能载入与包含javascript的页面存储于同一服务器上的文件)
//默认是异步载入的,将其async属性设置为false就变为同步载入
// oXMLDom.async=false;
oXMLDom.load("test.xml");
alert(oXMLDom.documentElement.tagName);
}
}
</scrip
异步载入文件的时候要使用readState特性和onreadystatechange事件处理函数
readyState特性有5种可能的值:
0 DOM尚未初始化任何信息
1 DOM正在载入数据
2 DOM完成了数据载入
3 DOM已经可用,不过某些部分可能还不能用
4 DOM已经完全载入
一旦readyState特性的值会改变就会触发readystatechange事件。
oXMLDom.onreadystatechange=function(){
if(oXMLDom.readyState==4){
alert("DOM完全载入");
}
}
注意:在if语句中没有使用this关键字而是依然使用oXMLDom.readyState
var oNode=oXMLDom.documentElements.childNodes[1];
注意:xml是只读的,直接对其修改只能回造成错误
尝试将xml文件载入到javascript的过程中难免会遇到错误,无论使用上述的哪个方法,为了解决这个问题,微软的XML DOM的parseError的特性实际上包含以下特性的所有信息
//这三个参数分别表示文档的命名空间URL、文档元素的标签名称、文档的类型对象
var oXmlDom=document.implementation.createDocument("","",null);
载入模式也会有异步和同步同上
只提供了一个载入的方式:load()方式
将xml语句解析为DOM:也就是同loadXML()函数一样
var oParser=new DOMParser();
var oXmlDom=oParser.parseFromString("<root/>","text/xml");