我有这种格式的XML Feed:
<Country Name="ALBANIA">
<Destination Name="TIRANA">
<Destination_1>TIR</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
</Country>
<Country Name="AUSTRALIA">
<Destination Name="ADELAIDE">
<Destination_1>ADL</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="ALICE SPRINGS">
<Destination_1>ASP</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="BRISBANE">
<Destination_1>BNE</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="CAIRNS">
<Destination_1>CNS</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="DARWIN">
<Destination_1>DRW</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="GOLD COAST">
<Destination_1>OOL</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="HOBART">
<Destination_1>HBA</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="MELBOURNE">
<Destination_1>MEL</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="PERTH">
<Destination_1>PER</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
<Destination Name="SYDNEY">
<Destination_1>SYD</Destination_1>
<Destination_2/>
<Destination_3/>
</Destination>
</Country>
现在,我要做的是仅从ALBANIA中选择目的地,并将它们发布为这样的链接:
<p><a href="TIR.html">TIRANA</a> in ALBANIA</p>
使用XML值,链接应该如下所示
<p><a href="{{Destination_1}}.html">{{Destination Name}}</a> in {{Country Name}}</p>
我能够为所有国家/地区创建列表,但我不知道如何仅显示一个国家/地区的值。
这是列出所有项目的代码
$.ajax({
type: "GET",
url: "test.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('Country').each(function(){
var countryName = $(this).attr('Name');
if (countryName = localStorage.ArrivalCountry) {
var destinationName = $(this).find('Destination').attr('Name');
$('<a class="listItem" href="#" id="'+destinationName+'">'+destinationName+'<div class="arrow"></div></a>').appendTo('#destinationList');
}
});
}
});
答案 0 :(得分:1)
不确定你是如何计划使用它,遍历所有国家?,循环遍布给定国家/地区的所有目的地?如果您希望获得更多帮助,请在问题中添加更多信息。
这些简单的xpath为您提供了所需的节点。
此XPath为您提供Name = ALBANIA
的整个国家/地区节点//Country[@Name = 'ALBANIA']
这为您提供了您希望从中提取Name属性(TIRANA)的目标节点:
//Country[@Name = 'ALBANIA']/Destination
这将为您提供Destination_1节点,您希望从中提取文本“TIR”
//Country[@Name = 'ALBANIA']/Destination/Destination_1
答案 1 :(得分:0)
首先,我建议您不要调用目标元素Destination_1,Destination_2等。仅将其称为目的地并呼叫父目的地,即:。
<Destinations>
<Destination></Destination>
<Destination></Destination>
<Destination></Destination>
</Destination>
我没有更改XML,但这只是一个如何使用jquery导航XML的小例子:
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<BODY>
<script type="text/javascript">
// need to add a root to the xml for it to be valid
var xml = $.parseXML('<root><Country Name="ALBANIA">' +
' <Destination Name="TIRANA">' +
' <Destination_1>TIR</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
'</Country>' +
'<Country Name="AUSTRALIA">' +
' <Destination Name="ADELAIDE">' +
' <Destination_1>ADL</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="ALICE SPRINGS">' +
' <Destination_1>ASP</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="BRISBANE">' +
' <Destination_1>BNE</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="CAIRNS">' +
' <Destination_1>CNS</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="DARWIN">' +
' <Destination_1>DRW</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="GOLD COAST">' +
' <Destination_1>OOL</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="HOBART">' +
' <Destination_1>HBA</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="MELBOURNE">' +
' <Destination_1>MEL</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="PERTH">' +
' <Destination_1>PER</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
' <Destination Name="SYDNEY">' +
' <Destination_1>SYD</Destination_1>' +
' <Destination_2/>' +
' <Destination_3/>' +
' </Destination>' +
'</Country></root>');
// looping the xml
for (var i=0; i<xml.childNodes[0].childNodes.length; i++)
{
var country = xml.childNodes[0].childNodes[i];
//alert(country.getAttribute('Name'));
// ... continue to loop the childNodes (destination) of country
for (var j=0; j<country.childNodes.length; j++)
{
// ...
}
}
// means you can easily (you can probably figure out the specifics):
var countries = xml.childNodes[0];
var australia = null;
$.each(countries.childNodes, function() {
if (this.getAttribute('Name') == 'AUSTRALIA')
{
australia = this;
return false;
}
});
console.log(australia);
// get a list to loop for all destinations
australia = $(countries).find('Country[Name="AUSTRALIA"]');
var destinations = australia.find('Destination');
console.log(destinations);
</script>
</BODY>
</html>