//这是IE创建ActiveXObject对象,方便后面解析xml文件
function createDocument()
{
if(typeof arguments.callee.activeXString!="string")
{
var versions=["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument"],i,len;
for(i=0,len=versions.length;i<len;i++)
{
try{
new ActiveXObject(versions[i]);
arguments.callee.activeXString=versions[i];
break;
}catch(er)
{
alert("创建IE文档出错");
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}
/*
//这里是异步加载外部xml文件,然后可以分析dom结构
var xmldom=createDocument();
xmldom.async=true;
xmldom.onreadystatechange=function(){
if(xmldom.readyState==4)
{
if(xmldom.parseError!=0)
{
console.log("An error occurred:\nError COde: "
+ xmldom.parseError.errorCode+"\n"
+"Line: "+xmldom.parseError.line+"\n"
+"Line Pos: "+xmldom.parseError.linepos+"\n"
+"Reason: "+xmldom.parseError.reason);
}else
{
console.log(xmldom.documentElement.firstChild.firstChild.data);
}
}
};
xmldom.load("xmltest.xml");
*/
//跨浏览器解析xml文件
function parseXml(xml)
{
var xmldom=null;
if(typeof DOMParser !="undefined")
{
xmldom=(new DOMParser()).parseFromString(xml,"text/xml");
var errors=xmldom.getElementsByTagName("parsererror");
if(errors.length)
{
throw new Error("XML parsing error: "+errors[0].textContent);
}
}else if(typeof ActiveXObject !="undefined")
{
xmldom=createDocument();
xmldom.loadXML(xml);
if(xmldom.parseError !=0)
{
throw new Error("XML parsing error: "+ xmldom.parseError.reason);
}
}else
{
throw new Error("no XML parser available.");
}
return xmldom;
}
//跨浏览器序列化dom文件,变成xml格式
function serializeXml(xmldom)
{
if(typeof XMLSerializer !="undefined")
{
return (new XMLSerializer()).serializeToString(xmldom);
}else if(typeof xmldom.xml !="undefined")
{
return xmldom.xml;
}else
{
throw new Error("could not serialize XML DOM.");
}
}
//测试
var xm=null
try{
xm=parseXml("<root><child>子节点</child></root>");
document.write(serializeXml(xm));
}catch(e)
{
alert(e.message);
}
javascript跨浏览器DOMParser()解析XML数据再用dom方法调用节点,XMLSerializer()将dom结构数据序列化
最新推荐文章于 2025-03-29 10:52:35 发布