JQuery解析XML数据的几个例子

用JavaScript解析XML数据是常见的编程任务,JavaScript能做的,JQuery当然也能做。下面我们来总结几个使用JQuery解析XML的例子。

第一种方案:

<script type="text/javascript">
$(document).ready(function() {
	$.ajax({
	  	url: 'http://www.nowamagic.net/cgi/test.xml',
	  	dataType: 'xml',
	  	success: function(data){
		  	//console.log(data);
		 	$(data).find("channel").find("item").each(function(index, ele) {
				var titles = $(ele).find("title").text();
				var links = $(ele).find("link").text();
				console.log(titles+'-----');
				$("#noticecon").find('ol').append('<li><a href="'+links+'">'+titles+'</a></li>');
			});
		}
	});
}) 
</script>

    <div id="noticecon">
		<ol>
		</ol>
	</div>

第二种方案:

<script type="text/javascript">
	$.get("http://www.nowamagic.net/cgi/test.xml", function(data){
		$(data).find('channel').find('item').each(function(index, ele){
			var titles = $(ele).find('title').text();
			var links = $(ele).find('link').text();
			$("#noticecon").find('ol').append('<li><a href="'+links+'">'+titles+'</a></li>');
		})
	});
</script>

    <div id="noticecon">
		<ol>
		</ol>
	</div>

一般步骤如下:

1. 读取xml文件

$.get("xmlfile.xml",function(xml){
	//xml即为可以读取使用的内容,具体读取见第2点
});

2. 读取xml内容

如果读取的xml是来于xml文件,这结合上面的那点,处理如下:

$.get("xmlfile.xml",function(xml){    
	$(xml).find("item").length;    
});

如果读取的是xml字符串,则要注意一点,xml字符串的必然被"<xml>"和"</xml>"包围才可以被解析

$("<xml><root><item></item></root></xml>").find("item").length;

解析xml内容:

示例xml:

<?xml version="1.0" encoding="utf-8" ?>
<fields>
  <field Name="Name1">
    <fieldname>dsname</fieldname>
    <datatype>字符</datatype>
  </field>
  <field Name="Name2">
    <fieldname>dstype</fieldname>
    <datatype>字符</datatype>
  </field>
</fields>

以下是解析示例代码:

$(xml).find("field").each(function() {
	var field = $(this);
	var fName = field.attr("Name");//读取节点属性
	var dataType = field.find("datatype").text();//读取子节点的值
});

-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src=" http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(function () {
        var xml = '<markers>';
        xml += '<marker carId="1" carName="SHANGHAI" gpsTime="2011-08-26 21:21:11.0" lat="31.230393" lng="121.473704" direction="222" speed="22" />';
        xml += '<marker carId="7" carName="XIAMEN" gpsTime="2011-08-26 21:21:11.0" lat="24.479836" lng="118.089421" direction="222" speed="22" />';
        xml += '</markers>';
        var xmlDoc = $.parseXML(xml);
        var result="";
        $(xmlDoc).find("markers marker").each(function () {
            result += "carId = " + $(this).attr("carId")
                + " ;carName =" + $(this).attr("carName")
                + " ;gpsTime =" + $(this).attr("gpsTime") + "\n";
        });
        alert(result);
    });
</script>
</head>
<body>
</body>
</html>
 
-----------------------请求
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
    <script src=" http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
        function search() {
            var searchStrLow = $("#txtTitle").val().toLowerCase();
            $.post("1.xml", function(data) {
                var html = "";
                $(data).find('book').each(function() {
                    var titleLow = $(this).find("title").text().toLowerCase();
                    if (titleLow.indexOf(searchStrLow)!=-1) {
                        html += "<tr><td>" + $(this).find("title").text() + "</td>";
                        html += "<td>" + $(this).find("author").text() + "</td>";
                        html += "<td>" + $(this).find("year").text() + "</td></tr>";
                        $("#tbody1").html(html);
                    }
                });
            });
        }
</script>
</head>
<body>
    <span>输入标题:</span><input id="txtTitle" type="text" />
    <input id="Button1" type="button" value="搜索" οnclick="search()" />
    <table style="width: 100%;">
        <thead><tr><td>Title</td><td>Author</td><td>Year</td></tr></thead>
        <tbody id="tbody1">
        </tbody>
    </table>
</body>
</html>

<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
  <book id="No1">
   <title>An Introduction to XML</title>
   <author>Chunbin</author>
   <year>2010</year>
   <price>98.0</price>
   
 </book>
  <book id="No2">
   <title>The Performance of DataBase</title>
   <author>John</author>
   <year>1996</year>
   <price>56.0</price>
 </book>
</bookstore>
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值