Как разбирать XML с помощью jQuery?
Как разобрать XML и как я могу выполнить результат с помощью jQuery? Вот мой пример XML:
<Pages>
<Page Name="test">
<controls>
<test>this is a test.</test>
</controls>
</Page>
<Page Name = "User">
<controls>
<name>Sunil</name>
</controls>
</Page>
</Pages>
Я хотел бы найти node по этому пути Pages
→ Page Name
→ controls
→ test
?
Ответы
Ответ 1
Для этого есть функция $.parseXML
: http://api.jquery.com/jQuery.parseXML/
Вы можете использовать его следующим образом:
var xml = $.parseXML(yourfile.xml),
$xml = $( xml ),
$test = $xml.find('test');
console.log($test.text());
Если вам действительно нужен объект, для этого вам нужен плагин. Например, этот плагин преобразует ваш XML в JSON: http://www.fyneworks.com/jquery/xml-to-json/
Ответ 2
вы можете использовать .parseXML
var xml='<Pages>
<Page Name="test">
<controls>
<test>this is a test.</test>
</controls>
</Page>
<page Name = "User">
<controls>
<name>Sunil</name>
</controls>
</page>
</Pages>';
JQuery
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc );
$($xml).each(function(){
alert($(this).find("Page[Name]>controls>name").text());
});
вот скрипка http://jsfiddle.net/R37mC/1/
Ответ 3
Я предполагаю, что вы загружаете XML из внешнего файла. С $.ajax()
это довольно просто:
$.ajax({
url: 'xmlfile.xml',
dataType: 'xml',
success: function(data){
// Extract relevant data from XML
var xml_node = $('Pages',data);
console.log( xml_node.find('Page[Name="test"] > controls > test').text() );
},
error: function(data){
console.log('Error loading XML data');
}
});
Кроме того, вы должны быть совместимы с именами XML node. У вас есть строчные и заглавные буквы node (<Page>
versus <Page>
), которые могут сбивать с толку при попытке использовать селектор дерева XML.
Ответ 4
$xml = $( $.parseXML( xml ) );
$xml.find("<<your_xml_tag_name>>").each(function(index,elem){
// elem = found XML element
});
Ответ 5
Посмотрите на jQuery .parseXML()
[docs]:
var $xml = $(jQuery.parseXML(xml));
var $test = $xml.find('Page[Name="test"] > controls > test');
Ответ 6
Я пошел по пути jQuery .parseXML()
однако обнаружил, что синтаксис пути XML 'Page[Name="test"] > controls > test'
не будет работать (если кто-либо знает, почему, пожалуйста, кричите!).
Вместо этого я связал отдельные результаты .find()
с тем, что выглядело так:
$xmlDoc.find('Page[Name="test"]')
.find('contols')
.find('test')
Результат достигает того же, что и я ожидал, если найдет один выстрел.
Ответ 7
Первое, что появляется в результатах google http://think2loud.com/224-reading-xml-with-jquery/
Нет простого способа доступа к структуре xml (например, вы описали Pages- > pagename- > controls- > test) в jQuery без каких-либо плагинов.