转自:http://www.nowamagic.net/jquery/jquery_ParsingXmlData.php
JQuery解析XML数据的几个例子
2011-05-13
用JavaScript解析XML数据是常见的编程任务,JavaScript能做的,JQuery当然也能做。下面我们来总结几个使用JQuery解析XML的例子。
第一种方案:
01 | <script type= "text/javascript" > |
02 | $(document).ready( function () { |
03 | $.ajax({ |
04 | url: 'http://www.nowamagic.net/cgi/test.xml' , |
05 | dataType: 'xml' , |
06 | success: function (data){ |
07 | //console.log(data); |
08 | $(data).find( "channel" ).find( "item" ).each( function (index, ele) { |
09 | var titles = $(ele).find( "title" ).text(); |
10 | var links = $(ele).find( "link" ).text(); |
11 | console.log(titles+ '-----' ); |
12 | $( "#noticecon" ).find( 'ol' ).append( '<li><a href="' +links+ '">' +titles+ '</a></li>' ); |
13 | }); |
14 | } |
15 | }); |
16 | }) |
17 | </script> |
18 |
19 | <div id= "noticecon" > |
20 | <ol> |
21 | </ol> |
22 | </div> |
第二种方案:
01 | <script type= "text/javascript" > |
02 | $.get( "http://www.nowamagic.net/cgi/test.xml" , function (data){ |
03 | $(data).find( 'channel' ).find( 'item' ).each( function (index, ele){ |
04 | var titles = $(ele).find( 'title' ).text(); |
05 | var links = $(ele).find( 'link' ).text(); |
06 | $( "#noticecon" ).find( 'ol' ).append( '<li><a href="' +links+ '">' +titles+ '</a></li>' ); |
07 | }) |
08 | }); |
09 | </script> |
10 |
11 | <div id= "noticecon" > |
12 | <ol> |
13 | </ol> |
14 | </div> |
一般步骤如下:
1. 读取xml文件
1 | $.get( "xmlfile.xml" , function (xml){ |
2 | //xml即为可以读取使用的内容,具体读取见第2点 |
3 | }); |
2. 读取xml内容
如果读取的xml是来于xml文件,这结合上面的那点,处理如下:
1 | $.get( "xmlfile.xml" , function (xml){ |
2 | $(xml).find( "item" ).length; |
3 | }); |
如果读取的是xml字符串,则要注意一点,xml字符串的必然被"<xml>"和"</xml>"包围才可以被解析
1 | $( "<xml><root><item></item></root></xml>" ).find( "item" ).length; |
解析xml内容:
示例xml:
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
02 | <fields> |
03 | <field Name= "Name1" > |
04 | <fieldname>dsname</fieldname> |
05 | <datatype>字符</datatype> |
06 | </field> |
07 | <field Name= "Name2" > |
08 | <fieldname>dstype</fieldname> |
09 | <datatype>字符</datatype> |
10 | </field> |
11 | </fields> |
以下是解析示例代码:
1 | $(xml).find( "field" ).each( function () { |
2 | var field = $( this ); |
3 | var fName = field.attr( "Name" ); //读取节点属性 |
4 | var dataType = field.find( "datatype" ).text(); //读取子节点的值 |
5 | }); |