文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>jquery处理xml

jquery处理xml

时间:2010-09-10  来源:xue2

 

前几天用jQuery解析XML内容,发现直接将字符串放到$()中会引起问题,而先用上面的这段代码将字符串可靠的转成一个document对象再交给jQuery可以产生正确的jquery对象。

 

 function create_doc(text){

var xmlDoc = null;

try //Internet Explorer

{

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

 xmlDoc.async="false";

 xmlDoc.loadXML(text);

}

catch(e)

{

 try //Firefox, Mozilla, Opera, etc.

   {

   parser=new DOMParser();

   xmlDoc=parser.parseFromString(text,"text/xml");

   }

 catch(e) {}

}

return xmlDoc;

}

----------------------------

先给一个函数,做什么用的?看了就知道。

  1. function loadXML(xmlpath){
  2.  var xmlDoc = null;
  3.  if (window.ActiveXObject){
  4.   xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  5.  }else
  6.  if (document.implementation && document.implementation.createDocument){
  7.   xmlDoc = document.implementation.createDocument("","",null);
  8.  }else{
  9.   alert('Your browser cannot handle this script.');
  10.  }
  11.  xmlDoc.async = false;
  12.  xmlDoc.load(xmlpath);
  13.  return xmlDoc;
  14. }

这个函数首先根据用户的浏览器类型来创建一个合适的xml对象xmlDoc,对象创建了之后,接下来应该是导入xml文档了,”xmlDoc.load(xmlpath);”,xmlpath就是你的xml文档的路径了,这样第一步就已经完成了。

下面是我写的一个xml文档:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <location id="location">
  3.  <country id="1" name="中国大陆地区" path="chinabase">
  4.   <province id="1" name="北京" path="beijing">
  5.    <city id="1" name="东城" path="easttown"></city>
  6.    <city id="2" name="西城" path="westtown"></city>
  7.    <city id="3" name="崇文" path="chongwen"></city>
  8.    <city id="4" name="宣武" path="xuanwu"></city>
  9.    <city id="5" name="朝阳" path="chaoyang"></city>
  10.    <city id="6" name="丰台" path="fengtai"></city>
  11.    <city id="7" name="石景山" path="shijingshan"></city>
  12.    <city id="8" name="海淀" path="haidian"></city>
  13.   </province>
  14.   <province id="2" name="天津" path="tianjin">
  15.    <city id="101" name="和平" path="heping"></city>
  16.    <city id="102" name="河东" path="hedong"></city>
  17.    <city id="103" name="河西" path="hexi"></city>
  18.    <city id="104" name="南开" path="nankai"></city>
  19.    <city id="105" name="河北" path="hebei"></city>
  20.    <city id="106" name="红桥" path="hongqiao"></city>
  21.    <city id="107" name="塘沽" path="tanggu"></city>
  22.    <city id="108" name="汉沽" path="hangu"></city>
  23.   </province>
  24.   <province id="3" name="河北" path="hebei">
  25.    <city id="201" name="石家庄" path="shijiazhuang"></city>
  26.    <city id="202" name="唐山" path="tangshan"></city>
  27.    <city id="203" name="秦皇岛" path="qinhuangdao"></city>
  28.    <city id="204" name="邯郸" path="handan"></city>
  29.    <city id="205" name="邢台" path="xintai"></city>
  30.    <city id="206" name="保定" path="baoding"></city>
  31.    <city id="207" name="张家口" path="zhangjiakou"></city>
  32.    <city id="208" name="承德" path="chengde"></city>
  33.   </province>
  34.  </country>
  35.  <country id="2" name="中国其它地区" path="chinaother">
  36.   <province id="101" name="香港" path="hongkong">
  37.    <city id="301" name="城东" path="chengdong"></city>
  38.    <city id="302" name="城西" path="chengxi"></city>
  39.   </province>
  40.   <province id="102" name="澳门" path="macao">
  41.    <city id="401" name="东门" path="dongmen"></city>
  42.    <city id="402" name="西门" path="ximen"></city>
  43.   </province>
  44.   <province id="103" name="台湾" path="taiwan">
  45.    <city id="501" name="台北" path="taibei"></city>
  46.    <city id="502" name="高雄" path="gaoxiong"></city>
  47.   </province>
  48.  </country>
  49. </location>

现在我们就用之前创建的xmlDoc来处理这个xml文档。

xml文档中的内容是这样形式的:“国家>省份>城市”。

我们先获取它包含的国家列表:

//获取国家列表

  1. function getCountries(){
  2.  if($(oxml).find("location &gt; country").size()&gt;0){
  3.   var countryHtml;
  4.   $(oxml).find("country").each(function(){
  5.    countryHtml += '&lt;option value="'+$(this).attr("id")+'"&gt;'+$(this).attr("name")+'&lt;/option&gt;';
  6.   })
  7.   $(countryHtml).appendTo("#country");
  8.  }
  9. }

很简洁的几句话,作用就是获取国家列表然后写成需要的格式的html,再写到”#country”这个div中去。

首先是find()函数,$(oxml).find(”country”)找到所有的”country”;然后用each()函数,意思是对每个”country”都调用each()包含的函数;$(this).attr(”id”),取得当前元素”id”属性的值。

第一次用xml,了解不深,见笑了。

我做这个东西的时候是用在一个批量上传程序上,用户上传之前需要选择国家省份及城市,程序则根据用户选择的地区逐级创建目录,并将文件上传到相应目录下。下面是源码,有需要的随便拿。doxml

排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载