how to use responseXML to parse xml

Discussion in 'JavaScript' started by rahulmca1@gmail.com, Jan 31, 2007.

  1. #1
    Hi,

    I am sending this xml from server
    <assignmentList>
    <assignment>
    <id>333</id><name>1170235257994</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>0</listenerClass>
    </assignment>
    <assignment>
    <id>333</id><name>1170235257994</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>1</listenerClass>
    </assignment>
    </assignmentList>

    I need to parse above xml to get id , name,fileclass etc

    but in my js
    var root = o.responseXML.documentElement;
    var length=root.getElementsByTagName('assignment").length;
    alert(length); // displays 0.

    I need to get the length and iterate to get values from above two tags.
    But could not achieve it.




    but when I send

    <assignmentList>
    <assignment>
    <id>333</id><name>1170235257994</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>0</listenerClass>
    </assignment>
    </assignmentList>

    alert(length); // displays 1. correct


    Can you please show me how I can get correct length and then get values from it
    by getting values I mean

    var assetId = root.getElementsByTagName('id').firstChild.nodeValue;

    currently not working.

    I checked xml that is returned by server

    Server returns

    <assignmentList>
    <assignment>

    <id>397</id><name>1170251844329</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>0</listenerClass>

    </assignment>

    <assignment>
    <id>397</id><name>1170251844329</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>1</listenerClass>

    </assignment>

    </assignmentList>



    But when I checked in js
    alert("returned xml is ="+o.responseText);

    displaying:--

    <assignmentList>
    <assignment>

    <id>397</id><name>1170251844329</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>0</listenerClass>

    </assignment>

    <assignment>
    <id>397</id><name>1170251844329</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>1</listenerClass>

    </assignment>

    </assignmentList>

    <assignmentList>
    <assignment>

    <id>397</id><name>1170251844329</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>0</listenerClass>

    </assignment>

    <assignment>
    <id>397</id><name>1170251844329</name><fileClass>4</fileClass><checked_out_by> </checked_out_by><status>s1</status><publication>p1</publication><section>s1</section><change_type>1</change_type><listenerClass>1</listenerClass>

    </assignment>

    </assignmentList>

    I got two <assignmentList> tags

    thus
    var root = o.responseXML.documentElement;
    might not be working.

    Any ideas why I am getting this kind of behaviour.
    Already spent 2 days solving this problem




    waiting for response


    thanks
     
    rahulmca1@gmail.com, Jan 31, 2007 IP
  2. ajsa52

    ajsa52 Well-Known Member

    Messages:
    3,426
    Likes Received:
    125
    Best Answers:
    0
    Trophy Points:
    160
    #2
    You can iterate thru root.getElementsByTagName('assignment")[loop] from loop=0 increasing it until you get undefined.

     
    ajsa52, Feb 1, 2007 IP