Search code examples
jqueryxmltraversalnodevalue

Traverse XML with JQuery


this is a sample part of xml example

<PivotSet>
    <item>
        <column name = "M">1</column>
        <column name = "F">1640</column>
    </item>
    <item>
        <column name = "M">2</column>
        <column name = "F">5960</column>
    </item>
</PivotSet>
<PivotSet>
    <item>
        <column name = "M">1</column>
        <column name = "F">1700</column>
    </item>
    <item>
        <column name = "M">2</column>
        <column name = "F">7000</column>
    </item>
</PivotSet>

It should be as the following

1      
1640 1700

2
5960 7000

Can you help me by telling me how to do this using jquery please


Solution

  • Exactly the same way you traverse XHTML (since it's XML). Here's an example:

    var xml = '<PivotSet>[...]</PivotSet>';
    
    var $xml = $(xml);
    $xml.find('column').each(function(){
      alert($(this).text());
    });​
    

    http://jsfiddle.net/uBv2L/


    edit: your specific case:

    var $xml = $(xml);
    var out = '1\r\n';
    $xml.find('column[name="M"]').filter(function(){
        return $(this).text()=='1';
    }).each(function(){
      out+=$(this).next().text()+' ';
    });
    out += '\r\n2\r\n';
    $xml.find('column[name="M"]').filter(function(){
        return $(this).text()=='2';
    }).each(function(){
      out+=$(this).next().text()+' ';
    });
    
    alert(out);
    

    http://jsfiddle.net/uBv2L/1/