2011-08-02 70 views
2

是否可以通过使用子元素的值进行搜索来查找xml元素?使用jQuery选择xml子元素

所以对于XML如:

<route> 
    <name>Lakeway</name> 
    <abrv>LAKE</abrv> 
    <eta> 
     <time>00:30</time> 
     <dest>MAIN</dest> 
    </eta> 
</route> 

如果我只有abrv的价值,我将如何解析XML,以便在ETA获得标签的子元素?

这是可以与jQuery没有循环通过每个元素和比较值定义的变量?还是有更好的方法来做到这一点?

编辑:

我想解析从另一个域的XML饲料。我不确定是否可以使用xmlParse函数来实现,或者我需要使用jQuery的Ajax函数?

回答

1

也许是这样的:

var xmlString = "<route><name>Lakeway</name><abrv>LAKE</abrv><eta><time>00:30</time><dest>MAIN</dest></eta></route>", 
xmlDoc = $.parseXML(xmlString), 
$xml = $(xmlDoc), 
$abrv = $xml.find("abrv").text() == "LAKE" ? $xml.find("abrv") : false; 

var time = $abrv.next().children("time").text(); 
var dest = $abrv.next().children("dest").text(); 

alert(time + " " + dest); 

http://jsfiddle.net/jensbits/UH2m5/

希望,这可以让你开始。

+0

我怎样才能用这个外部的XML文件?这就是我正在寻找的东西。 – simon

+0

您将需要使用另一种方法带入xml。请参阅http://stackoverflow.com/questions/1292486/why-cant-i-load-an-external-resource-from-jquery-load-method –

+0

好的,所以我使用了一个简单的代理来获取XML,但是我还有另一个问题。使用parseXML函数和使用$ .get ajax函数有什么不同?因此,如果不是声明一个xml字符串,而是使用$ .get来获取xml,我应该能够使用与上面概述的相同的选择器吗? – simon

2

您可以使用contains筛选器根据此值筛选节点。

喜欢的东西,

$(xml).find('abrv:contains(LAKE) + eta > *') 

将返回一个jQuery对象与示例文档的两个元素。

<time>00:30</time> 
<dest>MAIN</dest> 

这是example