JS与jQ读取xml文件的方法


Posted in Javascript onDecember 08, 2015

废话不多说了,直接给大家贴代码了,具体代码如下所示:

jquery读取xml文件

<!DOCTYPE html PUBLIC "-//WC//DTD XHTML . Transitional//EN" "http://www.w.org/TR/xhtml/DTD/xhtml-transitional.dtd">
<html xmlns="http://www.w.org//xhtml">
<head>
  <title>jQuery 读取XML文件-jQuery学习</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-" />
  <style type="text/css">
    h{color:Green;text-align:center;}
    body{ background-color:#EEEEEE ; font-family:微软雅黑; }
    #showresult{width:px;overflow:hidden;}
  </style>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/../jquery.min.js"></script>  
  <script type="text/javascript">
    $(document).ready(function () {
      $("#read").click(function () {
        $.ajax({
          //请求方式为get
          type: "GET",
          //xml文件位置
          url: "sitemap.xml",
          //返回数据格式为xml
          dataType: "xml",
          //请求成功完成后要执行的方法
          success: function (xml) {
            $(xml).find("url").each(function (i) {
              //i从开始,累加,如果要显示所有数据,将判断去除即可
              if (i < ) {
                //链接地址
                var location = $(this).find("loc").text();
                //显示文字
                var text = $(this).find("loc").text();
                //动态加载方法:链接地址
                $("<a>").attr("href", location)
                //显示文字
              .text(text)
                //设置样式
              .css({ "width": "px", "float": "left", "margin-bottom": "px" })
                //加载到div
              .appendTo("#showresult");
              }
            })
          }
        });
        return false;
      });
    });
  </script>
</head>
<body>
  <div id="showresult">
    <h>jQuery读取XML文件</h>
    <a id="read" href="#" style="width:px;">点击读取XML</a>
  </div>
</body>
</html>

 js读取xml文件

<div id="blog_content" class="blog_content"><p><span style="color:#ff0000;">city.xml 文件</span></p><p><?xml version="1.0" encoding="UTF-8"?>
<root name="中国">
 <province name="请选择省" postcode="100000" >
  <city name="请选择市" postcode="100100" >
  <area name="请选择区" postcode="100101" />
 </city>
 </province>
 <province name="北京市" postcode="110000" >
  <city name="市辖区" postcode="110100" >
    <area name="东城区" postcode="110101" />
    <area name="西城区" postcode="110102" />
    <area name="崇文区" postcode="110103" />
    <area name="宣武区" postcode="110104" />
    <area name="朝阳区" postcode="110105" />
    <area name="丰台区" postcode="110106" />
    <area name="石景山区" postcode="110107" />
    <area name="海淀区" postcode="110108" />
    <area name="门头沟区" postcode="110109" />
    <area name="房山区" postcode="110111" />
    <area name="通州区" postcode="110112" />
    <area name="顺义区" postcode="110113" />
    <area name="昌平区" postcode="110114" />
    <area name="大兴区" postcode="110115" />
    <area name="怀柔区" postcode="110116" />
    <area name="平谷区" postcode="110117" />
  </city>
  <city name="县" postcode="110200" >
    <area name="密云县" postcode="110228" />
    <area name="延庆县" postcode="110229" />
  </city>
 </province>
 <province name="天津市" postcode="120000" >
  <city name="市辖区" postcode="120100" >
    <area name="和平区" postcode="120101" />
    <area name="河东区" postcode="120102" />
    <area name="河西区" postcode="120103" />
    <area name="南开区" postcode="120104" />
    <area name="河北区" postcode="120105" />
    <area name="红桥区" postcode="120106" />
    <area name="塘沽区" postcode="120107" />
    <area name="汉沽区" postcode="120108" />
    <area name="大港区" postcode="120109" />
    <area name="东丽区" postcode="120110" />
    <area name="西青区" postcode="120111" />
    <area name="津南区" postcode="120112" />
    <area name="北辰区" postcode="120113" />
    <area name="武清区" postcode="120114" />
    <area name="宝坻区" postcode="120115" />
  </city>
  <city name="县" postcode="120200" >
    <area name="宁河县" postcode="120221" />
    <area name="静海县" postcode="120223" />
    <area name="蓟县" postcode="120225" />
  </city>
 </province></p><p> <province name="河北省" postcode="130000" >
  <city name="石家庄市" postcode="130100" >
    <area name="长安区" postcode="130102" />
    <area name="桥东区" postcode="130103" />
    <area name="桥西区" postcode="130104" />
    <area name="新华区" postcode="130105" />
    <area name="井陉矿区" postcode="130107" />
    <area name="裕华区" postcode="130108" />
    <area name="井陉县" postcode="130121" />
    <area name="正定县" postcode="130123" />
    <area name="栾城县" postcode="130124" />
    <area name="行唐县" postcode="130125" />
    <area name="灵寿县" postcode="130126" />
    <area name="高邑县" postcode="130127" />
    <area name="深泽县" postcode="130128" />
    <area name="赞皇县" postcode="130129" />
    <area name="无极县" postcode="130130" />
    <area name="平山县" postcode="130131" />
    <area name="元氏县" postcode="130132" />
    <area name="赵县" postcode="130133" />
    <area name="辛集市" postcode="130181" />
    <area name="藁城市" postcode="130182" />
    <area name="晋州市" postcode="130183" />
    <area name="新乐市" postcode="130184" />
    <area name="鹿泉市" postcode="130185" />
  </city>
  <city name="唐山市" postcode="130200" >
    <area name="路南区" postcode="130202" />
    <area name="路北区" postcode="130203" />
    <area name="古冶区" postcode="130204" />
    <area name="开平区" postcode="130205" />
    <area name="丰南区" postcode="130207" />
    <area name="丰润区" postcode="130208" />
    <area name="滦县" postcode="130223" />
    <area name="滦南县" postcode="130224" />
    <area name="乐亭县" postcode="130225" />
    <area name="迁西县" postcode="130227" />
    <area name="玉田县" postcode="130229" />
    <area name="唐海县" postcode="130230" />
    <area name="遵化市" postcode="130281" />
    <area name="迁安市" postcode="130283" />
  </city>
  <city name="秦皇岛市" postcode="130300" >
    <area name="海港区" postcode="130302" />
    <area name="山海关区" postcode="130303" />
    <area name="北戴河区" postcode="130304" />
    <area name="青龙满族自治县" postcode="130321" />
    <area name="昌黎县" postcode="130322" />
    <area name="抚宁县" postcode="130323" />
    <area name="卢龙县" postcode="130324" />
  </city>
  <city name="邯郸市" postcode="130400" >
    <area name="邯山区" postcode="130402" />
    <area name="丛台区" postcode="130403" />
    <area name="复兴区" postcode="130404" />
    <area name="峰峰矿区" postcode="130406" />
    <area name="邯郸县" postcode="130421" />
    <area name="临漳县" postcode="130423" />
    <area name="成安县" postcode="130424" />
    <area name="大名县" postcode="130425" />
    <area name="涉县" postcode="130426" />
    <area name="磁县" postcode="130427" />
    <area name="肥乡县" postcode="130428" />
    <area name="永年县" postcode="130429" />
    <area name="邱县" postcode="130430" />
    <area name="鸡泽县" postcode="130431" />
    <area name="广平县" postcode="130432" />
    <area name="馆陶县" postcode="130433" />
    <area name="魏县" postcode="130434" />
    <area name="曲周县" postcode="130435" />
    <area name="武安市" postcode="130481" />
  </city>
  <city name="邢台市" postcode="130500" >
    <area name="桥东区" postcode="130502" />
    <area name="桥西区" postcode="130503" />
    <area name="邢台县" postcode="130521" />
    <area name="临城县" postcode="130522" />
    <area name="内丘县" postcode="130523" />
    <area name="柏乡县" postcode="130524" />
    <area name="隆尧县" postcode="130525" />
    <area name="任县" postcode="130526" />
    <area name="南和县" postcode="130527" />
    <area name="宁晋县" postcode="130528" />
    <area name="巨鹿县" postcode="130529" />
    <area name="新河县" postcode="130530" />
    <area name="广宗县" postcode="130531" />
    <area name="平乡县" postcode="130532" />
    <area name="威县" postcode="130533" />
    <area name="清河县" postcode="130534" />
    <area name="临西县" postcode="130535" />
    <area name="南宫市" postcode="130581" />
    <area name="沙河市" postcode="130582" />
  </city>
  <city name="保定市" postcode="130600" >
    <area name="新市区" postcode="130602" />
    <area name="北市区" postcode="130603" />
    <area name="南市区" postcode="130604" />
    <area name="满城县" postcode="130621" />
    <area name="清苑县" postcode="130622" />
    <area name="涞水县" postcode="130623" />
    <area name="阜平县" postcode="130624" />
    <area name="徐水县" postcode="130625" />
    <area name="定兴县" postcode="130626" />
    <area name="唐县" postcode="130627" />
    <area name="高阳县" postcode="130628" />
    <area name="容城县" postcode="130629" />
    <area name="涞源县" postcode="130630" />
    <area name="望都县" postcode="130631" />
    <area name="安新县" postcode="130632" />
    <area name="易县" postcode="130633" />
    <area name="曲阳县" postcode="130634" />
    <area name="蠡县" postcode="130635" />
    <area name="顺平县" postcode="130636" />
    <area name="博野县" postcode="130637" />
    <area name="雄县" postcode="130638" />
    <area name="涿州市" postcode="130681" />
    <area name="定州市" postcode="130682" />
    <area name="安国市" postcode="130683" />
    <area name="高碑店市" postcode="130684" />
  </city>
  <city name="张家口市" postcode="130700" >
    <area name="桥东区" postcode="130702" />
    <area name="桥西区" postcode="130703" />
    <area name="宣化区" postcode="130705" />
    <area name="下花园区" postcode="130706" />
    <area name="宣化县" postcode="130721" />
    <area name="张北县" postcode="130722" />
    <area name="康保县" postcode="130723" />
    <area name="沽源县" postcode="130724" />
    <area name="尚义县" postcode="130725" />
    <area name="蔚县" postcode="130726" />
    <area name="阳原县" postcode="130727" />
    <area name="怀安县" postcode="130728" />
    <area name="万全县" postcode="130729" />
    <area name="怀来县" postcode="130730" />
    <area name="涿鹿县" postcode="130731" />
    <area name="赤城县" postcode="130732" />
    <area name="崇礼县" postcode="130733" />
  </city>
  <city name="承德市" postcode="130800" >
    <area name="双桥区" postcode="130802" />
    <area name="双滦区" postcode="130803" />
    <area name="鹰手营子矿区" postcode="130804" />
    <area name="承德县" postcode="130821" />
    <area name="兴隆县" postcode="130822" />
    <area name="平泉县" postcode="130823" />
    <area name="滦平县" postcode="130824" />
    <area name="隆化县" postcode="130825" />
    <area name="丰宁满族自治县" postcode="130826" />
    <area name="宽城满族自治县" postcode="130827" />
    <area name="围场满族蒙古族自治县" postcode="130828" />
  </city>
  <city name="沧州市" postcode="130900" >
    <area name="新华区" postcode="130902" />
    <area name="运河区" postcode="130903" />
    <area name="沧县" postcode="130921" />
    <area name="青县" postcode="130922" />
    <area name="东光县" postcode="130923" />
    <area name="海兴县" postcode="130924" />
    <area name="盐山县" postcode="130925" />
    <area name="肃宁县" postcode="130926" />
    <area name="南皮县" postcode="130927" />
    <area name="吴桥县" postcode="130928" />
    <area name="献县" postcode="130929" />
    <area name="孟村回族自治县" postcode="130930" />
    <area name="泊头市" postcode="130981" />
    <area name="任丘市" postcode="130982" />
    <area name="黄骅市" postcode="130983" />
    <area name="河间市" postcode="130984" />
  </city>
  <city name="廊坊市" postcode="131000" >
    <area name="安次区" postcode="131002" />
    <area name="广阳区" postcode="131003" />
    <area name="固安县" postcode="131022" />
    <area name="永清县" postcode="131023" />
    <area name="香河县" postcode="131024" />
    <area name="大城县" postcode="131025" />
    <area name="文安县" postcode="131026" />
    <area name="大厂回族自治县" postcode="131028" />
    <area name="霸州市" postcode="131081" />
    <area name="三河市" postcode="131082" />
  </city>
  <city name="衡水市" postcode="131100" >
    <area name="桃城区" postcode="131102" />
    <area name="枣强县" postcode="131121" />
    <area name="武邑县" postcode="131122" />
    <area name="武强县" postcode="131123" />
    <area name="饶阳县" postcode="131124" />
    <area name="安平县" postcode="131125" />
    <area name="故城县" postcode="131126" />
    <area name="景县" postcode="131127" />
    <area name="阜城县" postcode="131128" />
    <area name="冀州市" postcode="131181" />
    <area name="深州市" postcode="131182" />
  </city>
 </province></p><p></root></p><p> </p><p><span style="color:#ff0000;">由于文件太长这里就写这几个省吧</span></p><p><span style="color:#ff0000;"> </span></p><p><span style="color:#ff0000;">city.html</span></p><p><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>city.html</title>
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="this is my page">
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
 </head>
 <body>
  <div>
  <span><select id="sheng" style="width: 100px"><option> 
   请选择省
  </option></select></span>
  <span><select id="shi" style="width: 100px">
  <option>
 请选择相应市
 </option>
  </select></span>
  <span><select id="xian" style="width: 100px">
  <option>
 请选择相应区
 </option>
  </select></span>
  </div>
 </body>
</html>
<script type="text/javascript">
<!--
function getXmlDoc() {
 var xmldoc;
 try{
  //IE浏览器
 xmlDoc = new ActiveXObject("microsoft.XMLDOM");
 }catch(e){
 try{
  //firefox 其他浏览器
  xmlDoc = document.implementation.createDocument("","",null);
 }catch(er){
 alert("您的浏览器太低了");
 }
 }
 //关闭异步加载,确保在文档完全加载之前解析器不会继续脚本的执行
 xmlDoc.async = false;
 //转载xml文件
 xmlDoc.load("city.xml");
 return xmlDoc;
}</p><p>window.onload = function() {
 //通过方法获取对象
 var xmlDoc = getXmlDoc();
 //获取xml文件的根节点
 var root = xmlDoc.documentElement;
 //获得所有的省节点
 var provinces = root.childNodes;
 //获取页面中要显示的省的控件dom对象
 var sheng = document.getElementById("sheng");
 var shi = document.getElementById("shi");
 var xian = document.getElementById("xian");
 //遍历所有的省
 for(var i=0;i<provinces.length;i++) {
 //查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题
 if(provinces[i].nodeType == 1) {
  //创建option节点对象
  var shengopt = document.createElement("option");
  //为省节点添加文本节点
  shengopt.appendChild(document.createTextNode(provinces[i].getAttribute("name")));
  //为省节点添加属性
  shengopt.setAttribute("value",provinces[i].getAttribute("postcode"));
  //添加省道页面dom对象中
  sheng.appendChild(shengopt);
 }
 }
 //当省节点发生改变时 触发事件
 sheng.onchange = function() {
 //获取省节点所有的option对象的集合
 var shengs = sheng.options;
 //获取选中option对象的selectedIndex(下标值)
 var num = shengs.selectedIndex;
 //清空市 区  
 shi.length = 1;
 xian.length = 1;
 var ppostocode = shengs[num].getAttribute("value");
 //遍历所有的省
 for(var i=0;i<provinces.length;i++) {
  //查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题
  if(provinces[i].nodeType == 1) {
  var postcode = provinces[i].getAttribute("postcode");
  if(postcode == ppostocode) {
   var cities = provinces[i].childNodes;
   shi.length = 1;
   for(var i=0;i<cities.length;i++) {
   if(cities[i].nodeType == 1) {
    var shiopt = document.createElement("option");
    shiopt.appendChild(document.createTextNode(cities[i].getAttribute("name")));
    shiopt.setAttribute("value",cities[i].getAttribute("postcode"));;
    shi.appendChild(shiopt);
   }
   }
   break;
  }
  }
 }
 }
 shi.onchange = function() {
 var shis = shi.options;
 var num = shis.selectedIndex;
 var spostcode = shis[num].getAttribute("value");
 for(var i=0;i<provinces.length;i++) {
  if(provinces[i].nodeType == 1) {
  var cities = provinces[i].childNodes;
  for(var j=0;j<cities.length;j++) {
   if(cities[j].nodeType == 1) {
   var postcode = cities[j].getAttribute("postcode");
   if(postcode == spostcode) {
    xian.length = 1;
    var areas = cities[j].childNodes;
    for(var k=0;k<areas.length;k++) {
    if(areas[k].nodeType == 1) {
     var xianopt = document.createElement("option");
     xianopt.appendChild(document.createTextNode(areas[k].getAttribute("name")));
     xianopt.setAttribute("value",areas[k].getAttribute("postcode"));
     xian.appendChild(xianopt);
    }
    }
    break;
   }
   }
  }
  }
 }
 }
}</p><p>
//-->
</script>
<!-- 
DOM 解析中的浏览器差异所有现代浏览器都支持 W3C DOM 规范。不过,浏览器之间是有差异的。
重要的区别有两点:</p><p>1、加载 XML 的方式 
 //IE浏览器
   var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
 //firefox 其他浏览器
  var xmlDoc = document.implementation.createDocument("","",null);
2、处理空白和换行的方式 
 Firefox,以及其他一些浏览器,会把空的空白或换行作为文本节点来处理,而 Internet Explorer 不会这样。
 思考: 那么怎么解决这种差异呢,下面是一种方法:
  for(var i=0;i<provinces.length;i++){ //在输出所有的子节点的时候
    if(provinces[i].nodeType==1){//在这里判断该节点是否是元素节点
     }
  }
 要注意的是: xmlDoc.async = false; 写成这样 IE , fireFox 都可以
   xmlDoc.async = "false"; IE 可以 fireFox 会报错
 --></p></div>

以上代码是讲解js、jq读取xml文件的方法,希望大家喜欢。

Javascript 相关文章推荐
IE浏览器打印的页眉页脚设置解决方法
Dec 08 Javascript
jquery实现按Enter键触发事件示例
Sep 10 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
Aug 30 Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 Javascript
常用DOM整理
Jun 16 Javascript
javascript实现动态导入js与css等静态资源文件的方法
Jul 25 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
Nov 19 Javascript
浅谈js中test()函数在正则中的使用
Aug 19 Javascript
vue数字类型过滤器的示例代码
Sep 07 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
Feb 03 Javascript
js实现select下拉框菜单
Dec 08 #Javascript
基于jQuery 实现bootstrapValidator下的全局验证
Dec 07 #Javascript
JavaScript的代码编写格式规范指南
Dec 07 #Javascript
JSON遍历方式实例总结
Dec 07 #Javascript
JS实现日期时间动态显示的方法
Dec 07 #Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 #Javascript
js实现遍历含有input的table实例
Dec 07 #Javascript
You might like
PHP版自动生成文章摘要
2008/07/23 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python 闭包的使用方法
2017/09/07 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
Python实现按中文排序的方法示例
2018/04/25 Python
Python 远程开关机的方法
2020/11/18 Python
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
个人教师自我评价范文
2013/12/02 职场文书
后勤部长岗位职责
2013/12/14 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
公司2014年度工作总结
2014/12/10 职场文书
接收函格式
2015/01/30 职场文书
会计主管竞聘书
2015/09/15 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
Python学习开发之图形用户界面详解
2021/08/23 Python