Подтвердить что ты не робот

Как разбирать 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 по этому пути PagesPage Namecontrolstest?

4b9b3361

Ответ 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 без каких-либо плагинов.