通过JS解析XML字符串

摘要:
'text/xml');&书信电报;META NAME=“Generator”CONTENT=“EditPlus”>&i<&xmlDoc=domParser.parseFromString(xmlString;
IE跟FireFox都有一个onload()方法来加载XML文件,而加载XML字符串时,IE下有onloadXML()方法,FireFox下并没有此方法,所以FireFox下要将XML字符串解析成DOM对象,必须使用DOMParser对象
domParser = new  DOMParser();
xmlDoc 
= domParser.parseFromString(xmlString, 'text/xml');

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

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

通过JS解析XML字符串第1张通过JS解析XML字符串第2张Code
<!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='http://t.zoukankan.com/某某地址(比如首页)';
        }
        
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>

免责声明:文章转载自《通过JS解析XML字符串》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]Maven多模块结构下版本管理的正确姿势-revision理解Android编译命令(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

冷知识:反常识的margin-top与padding-top与%,你被坑过吗?

前言之前本人写页面的时候,发现总是不能达到想要的效果,例如: <html> <div style="100%;height:100%"> <div style="100%;height:10%">head</div> <div style="100%;height:60%;margin:10%...

使用Element的table合并单元格的问题(合并行)

目标样式:  官网案例: <el-table :data="tableData" :span-method="arraySpanMethod" border style=" 100%"> <el-table-column prop="id" label="I...

SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active

趁今天有时间整理了一下 启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 java -jar app.jar --spring.profiles.active=qa --server.port=8060 //生产环境 java -jar...

easyui datagrid设置fit: true后,页面显示不全的情况

跟工具栏有关 <div id="tb"> <div style="float:left;"> <a href="http://t.zoukankan.com/cuizhf-p-5240229.html#" class="easyui-linkbutto...

【spring】jdbcTemplate之sql参数注入

demo @Repository("jdbcDao") public class JdbcTemplateDao { @Autowired private JdbcTemplate jdbcTemplate; @Autowired private NamedParameterJdbcTemplate namedTe...

(入门篇)Python web框架FastAPI——一个比Flask和Tornada更高性能的API 框架

用官方的话来说,FastAPI 是一种现代,快速(高性能)的 Web 框架,基于标准Python 类型提示使用 Python 3.6+ 构建 API   FastAPI 站在巨人的肩膀上? 很大程度上来说,这个巨人就是指 Flask 框架。 FastAPI 从语法上和 Flask 非常的相似,有异曲同工之妙。 技术背景:Py3.6+,Starlette...