加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml的操作

发布时间:2020-12-16 00:32:09 所属栏目:百科 来源:网络整理
导读:xml 的基本操作 1 JS 装载 xml 文档,是将 xml 的字符串装载成 dom 对象 2 Dom 操作 XML 3 浏览器处理空白信息的差异 4 dom 对象序列化 xml 字符串 将 xml 文档装载成 dom 对象 装载 xml 文档 html文档中的js scripttype="text/javascript" function test(){

xml的基本操作


1 JS装载xml文档,是将xml的字符串装载成dom对象
2 Dom操作XML

3 浏览器处理空白信息的差异

4 dom对象序列化xml字符串

xml文档装载成dom对象

装载xml文档

html文档中的js
  <scripttype="text/javascript">
            function test(){
                vardomxml1=loadXML(true,"loadXML.xml");
                vardomxml2=loadXML(false,"<xml>124</xml>");
                alert("");
            }
           
        </script>

loadXML .JS中的函数

*封装IE和Fire浏览器中装载同域XML文件或xml字符串的方法,返回的是xml文档对应的dom对象中的根节点

* @parma flag true 表示装载ml文件, flas表示装载失败

* @ oaram xmldoc flag 为true 表示xml文件路径falg为false表示xml字符串

*/

function loadXML(flag,xmldoc){
     if(window.ActiveXObject){
       
         //IE浏览器装载xml对象
         varactiveName=["MSXM2.DOMDocument","Miscrosoft.XmlDom"];
         var xmlObj;
       for(var i=0;i<activeName.length;i++){
           
            try {
                //创建成功,返回
                xmlObj=newActiveXObject(activeName[i]);
                break;
            } catch (e) {
               
            }
 
        }
        if(xmlObj){
            //同步方式装载xml数据
            xmlObj.async=false;
            if(flag){
                //装载xml文件
                xmlObj.load(xmldoc);
               
            
            }else
                {
                    //装载xml字符串
                    xmlObj.loadXML(xmldoc);
                }
                //返回整个xml文档根节点
               // return xmlObj;
               //返回根元素节点元素
                return xmlObj.documentElement;
           
        }else{
            alert("创建失败xml");
            return null;
        }
     }
 
//判断是否为IE的元素
 else if(document.implementation.createDocument){
         //针对firefox获取浏览器
         var xmlObj;
         if(flag){
             //装载xml文件
          
       //创建了空的dom对象     xmlObj=document.implementation.createDocument("","",null);
             xmlObj.async=false;//同步方式装载
              xmlObj.load(xmldoc);
              return xmlObj.documentElement;
   
           }else{
           alert("失败")
             return null;
         }
      
     } else{
         //装载XML字符串
//创建dom解析器
         xmlObj=new DOMParaser();
         vardocRoot=xmlObj.parseFormString(xmldoc,"text/xml");
         return docRoot.documentElement;
     }
     alret("失败");
     return null;
    
    
 }


浏览器处理空白信息的差异


解决方法是:移除所有空白信息,保证IEFireFox下的dom树结构相同

 function removeBlack(doc){
           if(doc.childNodes.lenght>1){
              
               for(varloopindes=0;loopindes<doc.childNodes.lenght;loopindes++)
               {
                   varcurrentNode=doc.childNodes[loopindes];
                   if(currentNode.nodeType==1){
                      removeBlack(currentNode);
                      
                   }
                  if(((/^s+$/test(currentNode.nodeValue)))&&(currentNode.nodeType==3)){
                    
                    doc.removeChild(doc.childNodes[loopIndex--]);
                 }
                  
               }
                    
                 }
                         
          
       }


dom序列为成表示xml的字符串

  • IE方式: dom对象上有个xml属性,可以获得对象所有对应的xml字符串
  • FifeFox方法:新建XLMSerializer对象,使用serializeToString方法将dom对象转为xml字符串

//封装不同浏览器dom序列化字符串
 
       function serizDom(xmldoc){
           if(xmldoc.xml){
               //IE
               return xmldoc.xml;
           }//火狐
           else if(window.XMLSerializer){
               var seriz=new XMLSerializer();
               returnseriz.serizlizeToString(xmldoc);
              
           }
           return null;
       }

通过以上几个基本步骤,我们了解到,对于xml的操作,首先是进行装载,然后将其序列化为dom对象,显示在html页面中。而在装载中有不同的浏览器差异,这种方式和创建xmlhttpRequest对象基本是类似的,所以又是学习的相同之处。装载完成就是处理,对空白信息进行处理,而操作中,增删中用到getElementByID获取解析xml方法并不是很好,更好的方式是XPath技术这个还请大家自己查看学习。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读