2012-01-05 55 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