扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
$(function() {
十余年的德兴网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整德兴建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“德兴网站设计”,“德兴网站推广”以来,每个客户项目都认真落实执行。
//定义一个xml对象
var x = $("xmlitemscenter //items/xml");
//在 center节点的结尾添加一个 bottom节点 ,然后在center节点的开头添加一个top节点
x.find("center").appendXml("bottom /").prependXml("top /");
//在 center节点的后面添加一个after节点,然后在center节点的前面添加一个before节点
x.find("center").afterXml("after /").beforeXml("before /");
alert(x.xml());
});
(function($) {
function mnpXml(opCode, xmlStr) {
return this.each(function() {
if (typeof xmlStr != "string") return;
if (!jQuery.isXMLDoc(this)) return;
var node = $.parseXml(xmlStr).firstChild.cloneNode(true);
switch (opCode) {
case "append":
this.appendChild(node);
break;
case "prepend":
if (this.childNodes.length 0)
this.insertBefore(node, this.firstChild);
else
this.appendChild(node);
break;
case "after":
if (this.nextSibling)
this.parentNode.insertBefore(node, this.nextSibling);
else
this.parentNode.appendChild(node);
break;
case "before":
this.parentNode.insertBefore(node, this);
break;
}
});
}
$.fn.extend({
appendXml: function(s) {
return mnpXml.call(this, "append", s);
},
prependXml: function(s) {
return mnpXml.call(this, "prepend", s);
},
afterXml: function(s) {
return mnpXml.call(this, "after", s);
},
beforeXml: function(s) {
return mnpXml.call(this, "before", s);
},
xml: function() {
var elem = this[0];
return elem.xml || (new XMLSerializer()).serializeToString(elem);
},
innerXml: function() {
var s = this.xml();
var i = s.indexOf(""), j = s.lastIndexOf("");
if (j i)
return s.substring(i + 1, j);
else
return "";
}
});
$.extend(jQuery, {
parseXml: function(xmlStr) {
if (window.ActiveXObject) {
var xd = new ActiveXObject("Microsoft.XMLDOM");
xd.async = false;
xd.loadXML(xmlStr);
return xd;
}
else if (typeof DOMParser != "undefined") {
var xd = new DOMParser().parseFromString(xmlStr, "text/xml");
return xd;
}
else return null;
},
toXml: function(obj, nodeName, useAttr) {
var x = $($.parseXml("" + nodeName + " /"));
var n = x.find(":first");
for (var p in obj) {
if (useAttr)
n.attr(p, obj[p]);
else
n.appendXml("" + p + " /").find(p).text(obj[p]);
}
return x[0];
}
});
})(jQuery);
[img]jquery的 text()仅能读取出xml中不含标签的文字部分。
而 html() 办法也绝对读不出xml中的标签。
现在给你两种解决办法:
办法一,不用ajax,而用jquery的load()办法。前提是你知道load()怎么用。
将你需要读取的的xml代码块外面套一层html标签,比如div什么的,再给他加个ID,比如:
info
div id="xxx"
小牛情侣纸巾套,很可爱的一对小情侣哦!br /
赶快领回家吧!br /
超软的面料,超可爱的造型,冷冷的冬天抱在手上也是br /
很享受的事情哦!/div/info
这样,用
$("选择器").load("xml文件的url #xxx")
就可以读出。
这办法有2种缺点。
一,这办法不是ajax,虽然有点像
二,需要改动xml原文件。
办法二,使用一小段jquery插件:
/**
* jQuery xml plugin - Converts XML node(s) to string
* Dual licensed under the MIT and GPL
* Copyright (c) 2009 Radim Svoboda
* @version 1.0.0
*/
jQuery.fn.xml=function(all){var s="";if(this.length)
(((typeof all!='undefined')all)?this:jQuery(this[0]).contents()).each(function());return s;};
以上为插件代码。
使用以上代码后,就可以使用ajax读取xml文件中的文字和标签了。比如:
$.get('xml文件url',function(data));
其中xml()括号里有两个参数0和1可以选。
0代表读取 info标签里面的内容
1代表读取 info标签以及标签里面的内容
这种办法,缺点暂时没发现。
好了,我写了那么多,分给我吧?
用JavaScript解析XML数据是常见的编程任务,JavaScript能做的,JQuery当然也能做。下面我们来总结几个使用JQuery解析XML的例子。
第一种方案:
script
type="text/javascript"
$(document).ready(function()
{
$.ajax({
url:
'',
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('lia
href="'+links+'"'+titles+'/a/li');
});
}
});
})
/script
div
id="noticecon"
ol
/ol
/div
第二种方案:
script
type="text/javascript"
$.get("",
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('lia
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"包围才可以被解析
$("xmlrootitem/item/root/xml").find("item").length;
解析xml内容:
示例xml:
?xml
version="1.0"
encoding="utf-8"
?
fields
field
Name="Name1"
fieldnamedsname/fieldname
datatype字符/datatype
/field
field
Name="Name2"
fieldnamedstype/fieldname
datatype字符/datatype
/field
/fields
以下是解析示例代码:
$(xml).find("field").each(function()
{
var
field
=
$(this);
var
fName
=
field.attr("Name");//读取节点属性
var
dataType
=
field.find("datatype").text();//读取子节点的值
});
以上这篇JQuery解析XML数据的几个简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
为什么要用绝对路径呢
改成相对路径就能通过,以后也好修改
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流