2011-08-02 27 views
2

子要素の値で検索してxml要素を見つけることは可能ですか?jQueryでxml子要素を選択

だからのようなXMLのために:ETAでタグの子要素を取得するように

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

私だけ abrv の価値を持っている場合は、どのように私は、XMLを解析するのでしょうか?

この要素は、各要素をループしたり、定義された変数と比較したりすることなく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 > *') 

はサンプル文書のための2つの要素をjQueryオブジェクトを返します。

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

ここexampleです。