2012-01-05 2 views
3

Я ищу плагин jQuery или что-нибудь, что позволит мне легко выбирать элементы через xpath после разбора XML с помощью $.parseXML.
Невозможно использовать селектор CSS, так как это порт javascript для .NET-программы, которая уже использует селекторы XPath.XPath selector для JQuery

Я видел много вопросов, заданных по этому вопросу, но не видел никаких жизнеспособных ответов, в то время как это выглядит довольно простой проблемой, и это стало неожиданностью, когда я узнал, что он не поддерживается.

Спасибо!

EDIT: Проблема заключается не в анализе XML, который я знаю, как это сделать. Проблема заключается в выполнении запросов XPath в анализируемом XML.

В настоящее время требуемая поддержка предназначена для браузеров для Android и iOS (которые основаны на веб-кадре), но Windows Phone также может нуждаться в поддержке в ближайшее время.

+0

Вам нужна кросс-браузерная поддержка? Я не уверен в других браузерах, но Mozilla поддерживает XPath (см. [Здесь] (https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript)) – bfavaretto

+0

Как указывает Тодд, вам не нужно ничего особенного для синтаксического анализа XML в jQuery - используйте те же теги и селектора атрибутов, которые вы использовали бы в HTML-документе. – Blazemonger

+0

См. Мои правки, пожалуйста. – Svarog

ответ

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

0

Вы также можете сделать:

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

селектор принимает два параметры. Второй параметр - это контекст, в котором можно найти селектор, который по умолчанию равен document

+0

См. Мои правки, пожалуйста. – Svarog