2012-01-05 57 views
3

我正在尋找一個jQuery插件或任何可以讓我使用$.parseXML解析XML後通過xpath輕鬆選擇元素的東西。
沒有辦法使用CSS選擇器,因爲這是一個已經使用XPath選擇器的.NET程序的JavaScript端口。JQuery的XPath選擇器

我已經看到很多關於此事的問題,但看不到任何可行的答案,而它看起來相當基本的需求,而且當我知道它不被支持時,它出乎意料。

謝謝!

編輯: 問題是不解析XML,我知道該怎麼辦。 問題是在解析的XML上運行XPath查詢。

現在所需的支持適用於Android和iOS本機瀏覽器(均基於webkit),但Windows Phone可能也很快需要支持。

+0

你需要跨瀏覽器支持嗎?我不確定其他瀏覽器,但Mozilla確實支持XPath(請參閱[這裏](https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript)) – bfavaretto 2012-01-05 14:13:46

+0

正如Todd指出的那樣,您不需要任何特殊的解析jQuery中的XML - 只需使用您在HTML文檔中使用的相同標籤和屬性選擇器即可。 – Blazemonger 2012-01-05 14:16:29

+0

請參閱我的編輯。 – Svarog 2012-01-05 14:26:46

回答

0

嗯,我沒有找到好的答案。

作爲一種可行的選擇,我發現這個漂亮的圖書館從googlecode上:http://goog-ajaxslt.sourceforge.net/
有一個跨瀏覽器XPath實現有可以獨立於整個架構中使用,並且工作的偉大。

0

你可以得到這樣的XML值:

$(myXML).find('person').each(function(i, val) { 
    // i is the counter of this element 
    var age = $(val).attr('age'); // this is an attribute of the person node 
    var firstName = $(val).find('firstname').text(); 
    var lastName = $(val).find('lastname').text(); 
} 

這將工作:

... 
<person age="3"> 
<firstname>Babe</firstname> 
<lastname>Ruth</lastname> 
</person> 
<person age="44"> 
<firstname>Hank</firstname> 
<lastname>AAron</lastname> 
</person> 
... 

here

+0

請參閱我的編輯。 – Svarog 2012-01-05 14:26:58

0

你也可以這樣做:

$('person', myXML).each(function(){ 
    //blah 
});

的選擇器需要兩個參數。第二個參數是找到選擇器的上下文,默認爲document

+0

請參閱我的編輯。 – Svarog 2012-01-05 14:27:21