2011-08-02 69 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