最近项目中用到了xml,需求是用户安装产品时先把一系列的数据保存到xml文件中,当执行到最后一步时才写入数据库,这样最大限度的减少了数据库的访问,于是不得不纠结在各浏览器的兼容性的问题(悲哀啊....)
进入正文 下面是一个xml文件 (createInstal.xml)
<?xml version="1.0" encoding="utf-8"?><info><Item><id descrption="级别" name="1" f_chines="编号" t_chines="編號" english="id" value="1">编号</id><levelname descrption="级别" name="" f_chines="级别名称" t_chines="級別名稱" english="Level-Name" value="级别一">级别名称</levelname><decrption descrption="级别" name="" f_chines="级别描述" t_chines="級別描述" english="Level-Description" value="级别描述一">描述</decrption><Tchines descrption="级别" name="" f_chines="繁体中文" t_chines="繁體中文" english="T-Chinese" value="級別一">繁体中文</Tchines><english descrption="级别" name="" f_chines="英文名称" t_chines="英文名稱" english="English" value="LevelOne">英文名称</english><奖项六 descrption="奖项" name="106" f_chines="奖项六" t_chines="獎項六" english="Worda-of-t" value="a"/><奖项十一 descrption="奖项" name="111" f_chines="奖项十一" t_chines="獎項十一" english="11" value="0.05"/><奖项十二 descrption="奖项" name="112" f_chines="奖项十二" t_chines="獎項十二" english="2222" value="0.04"/><奖项十三 descrption="奖项" name="113" f_chines="奖项十三" t_chines="獎項十三" english="3333" value="0.85"/><奖项一 descrption="奖项" name="101" f_chines="奖项一" t_chines="獎項一" english="Aword-of-a" value="0.90"/></Item> </info>
为了能兼容IE与FF,写如下几个函数(loadxml.js):
var is_Ie =false; //是否为IE浏览器if (window.ActiveXObject) {is_Ie =true;}//加载多浏览器兼容的xml文档function loadXml(xmlUrl) {var xmldoc =null;try {xmldoc =new ActiveXObject("Microsoft.XMLDOM");}catch (e) {try {xmldoc = document.implementation.createDocument("", "", null);} catch (e) {alert(e.message);}}try {//关闭异步加载xmldoc.async =false;xmldoc.load(xmlUrl);return xmldoc;}catch (e) {alert(e.message);}returnnull;}//将一个xml文档格式的字符串换成xml文档function createXml(xmlText) {if (!xmlText) {returnnull;try {var xmldocm =new ActiveXObject("Microsoft.XMLDOM");xmldocm.loadXML(xmlText);return xmldocm;}catch (e) {try {returnnew DOMParse().parseFromString(xmlText, "text/xml");}catch (e) {returnnull;}}}}//获取节点及其子节点的文本function getXmlText(oNode) {if (oNode.text) {//IEreturn oNode.tex;}var sText ="";for (var i =0; i < oNode.childNodes.length; i++) { //遍历子节点if (oNode.childNodes[i].hasChildNodes()) { //是否有子节点sText += getXmlText(oNode.childNodes[i]);} else {sText += oNode[i].childNodes.nodeValue;}}return sText;}//获取节点及其子节点的字符串标识function getXml(oNode) {if (oNode.xml) {//IEreturn oNode.xml;}var serializer =new XMLSerializer();return serializer.serializeToString(oNode);}//获取指定节点的文本(注意:也可以用oNode.childNodes[0].nodeValue来获取节点的文本信息,这样就不用考虑浏览器的问题了oNodeoNode)function getxmlnodeText(oNode) {if (is_Ie) {return oNode.text;} else {if (oNode.nodeType ==1)return oNode.textContent;}}//获取指定节点的属性值function getxmlnodeattribute(oNode, attrName) {if (is_Ie) {return oNode.getAttribute(attrName);} else {if (oNode.nodeType ==1|| oNode.nodeType =="1")return oNode.attributes[attrName].value;return"undefined";}}
新闻热点
疑难解答
图片精选