XML > jQuery reading

TheCyX picture TheCyX · Feb 8, 2013 · Viewed 10k times · Source

How can i read this XML File with jQuery? With "normal tags" its no problem like:<car>Mustang</car>

HTML/jQuery:

$(document).ready(function(){
$.get("AMA.xml", function(XMLArray){
$(XMLArray).find("dataset").each(function(){

var $myAMA = $(this);
var number = $myAMA.attr("article.plunumber");
var name = $myAMA.attr("article.name");
var price = $myAMA.attr("article.price").text();
$("#AMAContainer").append("<p>"+number+"<br>"+name+"<br>"+price+"</p>");
  });
 });
});

XML File:

<document name="screen">
   <section name="list">
        <dataset>
            <var key="type">article</var>
            <var key="article.number">1</var>
            <var key="article.name">Testname1</var>
            <var key="article.displayname"/>
            <var key="article.price">99,99</var>
            <var key="article.plunumber">1</var>
            <action key="STANDARD">bp1;</action>
        </dataset>
        <dataset>
            <var key="type">article</var>
            <var key="article.number">2</var>
            <var key="article.name">Testname2</var>
            <var key="article.price">88,88</var>
            <var key="article.plunumber">2</var>
            <action key="STANDARD">bp2;</action>
        </dataset>
    </section>
</document>

I have absolute no idea how to read the values. I only need the three(number,name,price).

Answer

adeneo picture adeneo · Feb 8, 2013

You can select elements by attribute, you just have to use an attributes selector, or a filter() function etc.

$(document).ready(function () {
    $.get("AMA.xml", function (XMLArray) {
        var xml = $.parseXML(XMLArray);
        $(xml).find("dataset").each(function () {
            var number = $('[key="article.plunumber"]', this).text();
            var name = $('[key="article.name"]', this).text();
            var price = $('[key="article.price"]', this).text();
            $("#AMAContainer").append("<p>" + number + "<br>" + name + "<br>" + price + "</p>");
        });
    });
});