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>  

相關文章
相關標籤/搜索