Comment analyser le XML et comment naviguer dans le résultat avec jQuery? Voici mon exemple XML:
<Pages>
<Page Name="test">
<controls>
<test>this is a test.</test>
</controls>
</Page>
<Page Name = "User">
<controls>
<name>Sunil</name>
</controls>
</Page>
</Pages>
Je voudrais trouver le noeud par ce chemin Pages
-> Page Name
-> controls
-> test
?
Il y a le $.parseXML
fonction pour cela: http://api.jquery.com/jQuery.parseXML/
Vous pouvez l'utiliser comme ceci:
var xml = $.parseXML(yourfile.xml),
$xml = $( xml ),
$test = $xml.find('test');
console.log($test.text());
Si vous voulez vraiment un objet, vous avez besoin d'un plugin pour cela. Ce plugin, par exemple, convertira votre code XML en JSON: http://www.fyneworks.com/jquery/xml-to-json/
vous pouvez utiliser .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());
});
voici le violon http://jsfiddle.net/R37mC/1/
Je suppose que vous chargez le XML à partir d'un fichier externe. Avec $.ajax()
, c'est assez simple:
$.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');
}
});
En outre, vous devez être cohérent à propos de la dénomination des nœuds XML. Vous avez à la fois des noms de nœuds en minuscules et en majuscules (<Page>
contre <page>
) qui peut prêter à confusion lorsque vous essayez d'utiliser des sélecteurs d'arborescence XML.
$xml = $( $.parseXML( xml ) );
$xml.find("<<your_xml_tag_name>>").each(function(index,elem){
// elem = found XML element
});
Regardez jQuery .parseXML()
[docs] :
var $xml = $(jQuery.parseXML(xml));
var $test = $xml.find('Page[Name="test"] > controls > test');
Je suis allé dans le sens de jQuery .parseXML()
mais j'ai constaté que la syntaxe du chemin XML de 'Page[Name="test"] > controls > test'
Ne fonctionnerait pas (si quelqu'un sait pourquoi crier s'il vous plaît!).
Au lieu de cela, j'ai enchaîné l'individu .find()
pour obtenir quelque chose qui ressemble à ceci:
$xmlDoc.find('Page[Name="test"]')
.find('contols')
.find('test')
Le résultat atteint le même résultat que ce à quoi je m'attendais de la recherche en un coup.
Première chose qui apparaît dans les résultats de Google http: //think2loud.com/224-reading-xml-with-jquery/ Il n'y a pas de moyen simple d'accéder à la structure xml (comme vous l'avez décrit Pages-> pagename-> controls-> test ) dans jQuery sans aucun plugin.