zoukankan      html  css  js  c++  java
  • 通过JS解析XML字符串

    IE跟FireFox都有一个onload()方法来加载XML文件,而加载XML字符串时,IE下有onloadXML()方法,FireFox下并没有此方法,所以FireFox下要将XML字符串解析成DOM对象,必须使用DOMParser对象
    domParser = new  DOMParser();
    xmlDoc 
    = domParser.parseFromString(xmlString, 'text/xml');

    解释下两个参数:第一个是xml字符串内容,第二个是要解析的XML标记参数contentType文本的内容类型

    下面做了一个小例题来加以说明


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML xmlns="http://www.w3.org/1999/xhtml">
     
    <HEAD>
      
    <TITLE> New Document </TITLE>
      
    <META NAME="Generator" CONTENT="EditPlus">
      
    <META NAME="Author" CONTENT="">
      
    <META NAME="Keywords" CONTENT="">
      
    <META NAME="Description" CONTENT="">
      
    <script type='text/javascript'>
        loadXML 
    = function(xmlString){
            var xmlDoc
    =null;
            
    //判断浏览器的类型
            
    //支持IE浏览器 
            if(!window.DOMParser && window.ActiveXObject){   //window.DOMParser 判断是否是非ie浏览器
                var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
                
    for(var i=0;i<xmlDomVersions.length;i++){
                    
    try{
                        xmlDoc 
    = new ActiveXObject(xmlDomVersions[i]);
                        xmlDoc.async 
    = false;
                        xmlDoc.loadXML(xmlString); 
    //loadXML方法载入xml字符串
                        break;
                    }
    catch(e){
                    }
                }
            }
            
    //支持Mozilla浏览器
            else if(window.DOMParser && document.implementation && document.implementation.createDocument){
                
    try{
                    
    /* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
                     * 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
                     * parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
                     * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
                     
    */
                    domParser 
    = new  DOMParser();
                    xmlDoc 
    = domParser.parseFromString(xmlString, 'text/xml');
                }
    catch(e){
                }
            }
            
    else{
                
    return null;
            }

            
    return xmlDoc;
        }

        
    //对xml对象进行判断
        checkXMLDocObj = function(xmlString){
            var xmlDoc 
    = loadXML(xmlString);
            
    if(xmlDoc==null){
                alert(
    '您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
                
    //window.location.href='某某地址(比如首页)';
            }
            
    return xmlDoc;
        }
        
        
    //参数1:控件id号,参数2:理解为定位节点
        initializeSelect = function(oid,xPath){
            var xmlstr
    ="<?xml version=\"1.0\" encoding=\"utf-8\"?><DongFang><Company><cNname>1</cNname><cIP>1</cIP></Company><Company><cNname>2</cNname><cIP>2</cIP></Company><Company><cNname>3</cNname><cIP>3</cIP></Company><Company><cNname>4</cNname><cIP>4</cIP></Company><Company><cNname>5</cNname><cIP>5</cIP></Company> <Company><cNname>6</cNname><cIP>6</cIP></Company></DongFang>";
            var xmlDoc 
    = checkXMLDocObj(xmlstr);
            var n;
            var l;
            var e 
    = document.getElementById(oid);//得到下拉列表框控件
            if(e!=null){
                n 
    = xmlDoc.getElementsByTagName(xPath);
                l 
    = n.length;
                
    //循环添加列表子项
                for(var i=0;i<l;i++){
                    e.options.add(
    new Option(n[i].getElementsByTagName("cNname")[0].firstChild.nodeValue, n[i].getElementsByTagName("cIP")[0].firstChild.nodeValue));
                }
            }
        }
      
    </script>
     
    </HEAD>

     
    <BODY onload="initializeSelect('company','Company')">
      
    <select id='company' name='company' onChange='showValue()'>
        
    <option selected='selected'></option>
      
    </select>
     
    </BODY>
    </HTML>
  • 相关阅读:
    [Hibernate]
    asc.desc
    Could not obtain connection metadata
    java枚举类Enum方法简介(valueof,value,ordinal)
    maven3 手动安装本地jar到仓库
    maven命令大全
    如何正确遍历删除List中的元素,你会吗?
    Hibernate的session.createSQLQuery的几种查询方式
    Linux-github 搭建静态博客
    我所写的CNN框架 VS caffe
  • 原文地址:https://www.cnblogs.com/ggbbeyou/p/1441658.html
Copyright © 2011-2022 走看看