Como processar XML usando jQuery?

como analiso o XML, e como posso navegar pelo resultado usando o jQuery? Aqui está a minha amostra XML:

<Pages>
  <Page Name="test">
    <controls>
      <test>this is a test.</test>
    </controls>
  </Page>
  <Page Name = "User">
    <controls>
      <name>Sunil</name>
    </controls>
  </Page>
</Pages>
Eu gostaria de encontrar o nó por este caminho Pages -> Page Name -> controls -> test ?

Author: Santosh Kumar, 2011-08-29

7 answers

Existe a função $.parseXML para isto: http://api.jquery.com/jQuery.parseXML/

Podes usá - lo assim:

var xml = $.parseXML(yourfile.xml),
  $xml = $( xml ),
  $test = $xml.find('test');

console.log($test.text());

Se você realmente quer um objeto, você precisa de um plugin para isso. Este 'plugin', por exemplo, irá converter o seu XML para JSON: http://www.fyneworks.com/jquery/xml-to-json/

 37
Author: Luwe, 2011-08-29 09:34:15

Pode usar .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());
     });
Aqui está o violino. http://jsfiddle.net/R37mC/1/
 14
Author: Rafay, 2011-08-29 09:25:53

Presumo que estejas a carregar o XML de um ficheiro externo. Com $.ajax(), na verdade, é muito simples.

$.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');
    }
});

Além disso, você deve ser consistente com a nomenclatura do nó XML. Você tem nomes de nós minúsculos e capitalizados (<Page> versus <page>) que podem ser confusos quando você tenta usar selectores de árvore XML.

 11
Author: Jens Roland, 2011-08-29 09:31:27
$xml = $( $.parseXML( xml ) );

$xml.find("<<your_xml_tag_name>>").each(function(index,elem){
    // elem = found XML element
});
 9
Author: Vicky, 2017-03-02 14:30:22
Olha para o jQuery..parseXML() [ docs]:
var $xml = $(jQuery.parseXML(xml));

var $test = $xml.find('Page[Name="test"] > controls > test');
 2
Author: Felix Kling, 2011-08-29 09:22:54
Fui pelo caminho do jQuery..parseXML() no entanto, descobriu que a sintaxe do caminho XML de 'Page[Name="test"] > controls > test' não funcionaria (se alguém sabe por que gritar por favor!). Em vez disso, acorrentei o indivíduo em algo parecido com isto.
$xmlDoc.find('Page[Name="test"]')
       .find('contols')
       .find('test')
O resultado alcança o mesmo que eu esperaria que o único tiro encontrasse.
 1
Author: mbarnettjones, 2017-01-23 11:46:42

A primeira coisa que aparece nos resultados do google http://think2loud.com/224-reading-xml-with-jquery/ Não existe uma forma simples de aceder à estrutura xml (como descreveu páginas->pagename->controlos->test) no jQuery sem quaisquer 'plugins'.

 0
Author: WTK, 2011-08-29 09:09:06