$(function()?{
十余年的德興網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整德興建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“德興網(wǎng)站設(shè)計(jì)”,“德興網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
//定義一個(gè)xml對象
var?x?=?$("xmlitemscenter?//items/xml");
//在?center節(jié)點(diǎn)的結(jié)尾添加一個(gè)?bottom節(jié)點(diǎn)?,然后在center節(jié)點(diǎn)的開頭添加一個(gè)top節(jié)點(diǎn)
x.find("center").appendXml("bottom?/").prependXml("top?/");
//在?center節(jié)點(diǎn)的后面添加一個(gè)after節(jié)點(diǎn),然后在center節(jié)點(diǎn)的前面添加一個(gè)before節(jié)點(diǎn)
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中不含標(biāo)簽的文字部分。
而 html() 辦法也絕對讀不出xml中的標(biāo)簽。
現(xiàn)在給你兩種解決辦法:
辦法一,不用ajax,而用jquery的load()辦法。前提是你知道load()怎么用。
將你需要讀取的的xml代碼塊外面套一層html標(biāo)簽,比如div什么的,再給他加個(gè)ID,比如:
info
div id="xxx"
小牛情侶紙巾套,很可愛的一對小情侶哦!br /
趕快領(lǐng)回家吧!br /
超軟的面料,超可愛的造型,冷冷的冬天抱在手上也是br /
很享受的事情哦!/div/info
這樣,用
$("選擇器").load("xml文件的url #xxx")
就可以讀出。
這辦法有2種缺點(diǎn)。
一,這辦法不是ajax,雖然有點(diǎn)像
二,需要改動(dòng)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文件中的文字和標(biāo)簽了。比如:
$.get('xml文件url',function(data));
其中xml()括號里有兩個(gè)參數(shù)0和1可以選。
0代表讀取 info標(biāo)簽里面的內(nèi)容
1代表讀取 info標(biāo)簽以及標(biāo)簽里面的內(nèi)容
這種辦法,缺點(diǎn)暫時(shí)沒發(fā)現(xiàn)。
好了,我寫了那么多,分給我吧?
用JavaScript解析XML數(shù)據(jù)是常見的編程任務(wù),JavaScript能做的,JQuery當(dāng)然也能做。下面我們來總結(jié)幾個(gè)使用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即為可以讀取使用的內(nèi)容,具體讀取見第2點(diǎn)
});
2.
讀取xml內(nèi)容
如果讀取的xml是來于xml文件,這結(jié)合上面的那點(diǎn),處理如下:
$.get("xmlfile.xml",function(xml){
$(xml).find("item").length;
});
如果讀取的是xml字符串,則要注意一點(diǎn),xml字符串的必然被"xml"和"/xml"包圍才可以被解析
$("xmlrootitem/item/root/xml").find("item").length;
解析xml內(nèi)容:
示例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");//讀取節(jié)點(diǎn)屬性
var
dataType
=
field.find("datatype").text();//讀取子節(jié)點(diǎn)的值
});
以上這篇JQuery解析XML數(shù)據(jù)的幾個(gè)簡單實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
為什么要用絕對路徑呢
改成相對路徑就能通過,以后也好修改