javascript之XML DOM的解析

1、xml文件的定义javascript

     

Xml代码 复制代码 收藏代码html

  1. <span style='font-family: "times new roman", times;'><?xml version="1.0" encoding="gbk"?>  java

  2. <china>  node

  3.     <province name="吉林省">  浏览器

  4.         <city>长春</city>  app

  5.         <city>吉林市</city>  异步

  6.         <city>四平</city>  async

  7.         <city>松原</city>  ui

  8.         <city>通化</city>  this

  9.     </province>  

  10.     <province name="辽宁省">  

  11.         <city>沈阳</city>  

  12.         <city>大连</city>  

  13.         <city>鞍山</city>  

  14.         <city>抚顺</city>  

  15.         <city>铁岭</city>  

  16.     </province>  

  17.     <province name="山东省">  

  18.         <city>济南</city>  

  19.         <city>青岛</city>  

  20.         <city>威海</city>  

  21.         <city>烟台</city>  

  22.         <city>潍坊</city>  

  23.     </province>  

  24. </china>  </span>  

<?xml version="1.0" encoding="gbk"?> <china> <province name="吉林省"> <city>长春</city> <city>吉林市</city> <city>四平</city> <city>松原</city> <city>通化</city> </province> <province name="辽宁省"> <city>沈阳</city> <city>大连</city> <city>鞍山</city> <city>抚顺</city> <city>铁岭</city> </province> <province name="山东省"> <city>济南</city> <city>青岛</city> <city>威海</city> <city>烟台</city> <city>潍坊</city> </province> </china> 

 

2、xml文件解析器的util类(跨浏览器)

Js代码 复制代码 收藏代码

  1. <span style='font-family: "times new roman", times;'>function parseXML(fileXmlName){  

  2.       var xmlDoc;             

  3.       try {  

  4.             //Internet Explorer  建立一个空的xml文档  

  5.             xmlDoc = new ActiveXObject("Microsoft.XMLDOM");  

  6.      }   

  7.     catch (e) {  

  8.             try {  

  9.             //Firefox, Mozilla, Opera, 建立一个空的xml文档  

  10.             xmlDoc = document.implementation.createDocument(""""null);  

  11.             }   

  12.             catch (e) {  

  13.             }  

  14.      }  

  15.      //关闭异步加载  

  16.      xmlDoc.async = false;  

  17.      //加载xml文件  

  18.      xmlDoc.load(fileXmlName);  

  19.      return xmlDoc;  

  20. }  

  21. </span>  

function parseXML(fileXmlName){      var xmlDoc;      try {   //Internet Explorer  建立一个空的xml文档            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");     }    catch (e) {            try { //Firefox, Mozilla, Opera, 建立一个空的xml文档   xmlDoc = document.implementation.createDocument("", "", null);            }            catch (e) {            }     }     //关闭异步加载     xmlDoc.async = false;     //加载xml文件     xmlDoc.load(fileXmlName);     return xmlDoc; }

 

3、XML DOM访问节点

Js代码 复制代码 收藏代码

  1.     <html>  

  2.       <head>  

  3.         <title>test01.html</title>  

  4.         <meta http-equiv="content-type" content="text/html; charset=UTF-8">  

  5.         <script type="text/javascript" src="util.js"></script>  

  6.     </head>  

  7.     <body>  

  8.         <select id="province" name="province">  

  9.             <option value="">请选择....</option>  

  10.             <option value="吉林省">吉林省</option>  

  11.             <option value="辽宁省">辽宁省</option>  

  12.             <option value="山东省">山东省</option>  

  13.         </select>  

  14.         <select id="city" name="city">  

  15.             <option value="">请选择.....</option>  

  16.         </select>  

  17.     </body>  

  18.     <script language="JavaScript">  

  19.     //获取第一个下拉选择框时,显示对应的省份信息  

  20.     document.getElementById("province").onchange = function () {  

  21.     //处理上一级节点的值  

  22.     var cityElement = document.getElementById("city");  

  23.     var optionElements =cityElement.getElementsByTagName("option");  

  24.     for(var z=1;z<optionElements.length;z++){  

  25.         cityElement.removeChild(optionElements[z]);  

  26.         z--;  

  27.     }  

  28.       

  29.     //1.获取页面选中的省份信息  

  30.     var provinceElement = this.value;  

  31.     //2.建立xml解析器,参数传递xml文件  

  32.     var docXml = parseXML("cities.xml");  

  33.     //3.获取xml文件全部对应的province标签  

  34.     var provinceXmlElements = docXml.getElementsByTagName("province");  

  35.     //4.遍历province标签  

  36.     for (var i = 0; i < provinceXmlElements.length; i++) {  

  37.         var provinceXmlElement = provinceXmlElements[i];  

  38.         var provinceXmlValue = provinceXmlElement.getAttribute("name");  

  39.         //5.对比(页面==xml)  

  40.         if (provinceXmlValue == provinceElement) {  

  41.             //6.获取获取xml文件全部对应的province下的全部city标签  

  42.             var cityXmlElements = provinceXmlElement.getElementsByTagName("city");  

  43.             //7.遍历city标签  

  44.             for (var j = 0; j < cityXmlElements.length; j++) {  

  45.                 var cityXmlElement = cityXmlElements[j];  

  46. //              var cityXmlValue = cityXmlElement.fistChild.nodeValue;  

  47.                 var cityXmlValue = cityXmlElement.text;  

  48.                 //8.增长city值  

  49.                 var optionElement = document.createElement("option");  

  50.                 optionElement.setAttribute("value", cityXmlValue);  

  51.                 var text = document.createTextNode(cityXmlValue);  

  52.                 optionElement.appendChild(text);  

  53.                 cityElement.appendChild(optionElement);  

  54.             }  

  55.         }  

  56.     }  

  57. }  

  58.               

  59.     </script>  

  60. </html>  

相关文章
相关标签/搜索