Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Loop through XML Parser?

I am developing an app, where on the click of a button, a list of the document information stored in an XML file is shown on screen in a <ul> tag. The current JavaScript in the function is;

    function viewXMLFiles() {
        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "TestInfo.xml", false);
        xmlhttp.send();

        xmlDoc = xmlhttp.responseXML;

        document.getElementById("docname").innerHTML = xmlDoc.getElementsByTagName("document_name")[0].childNodes[0].nodeValue;
        document.getElementById("filetype").innerHTML = xmlDoc.getElementsByTagName("file_type")[0].childNodes[0].nodeValue;
        document.getElementById("fileloc").innerHTML = pathToRoot + "/" + document.getElementById("docname").innerHTML;

        document.getElementById("docname1").innerHTML = xmlDoc.getElementsByTagName("document_name")[1].childNodes[0].nodeValue;
        document.getElementById("filetype1").innerHTML = xmlDoc.getElementsByTagName("file_type")[1].childNodes[0].nodeValue;
        document.getElementById("fileloc1").innerHTML = pathToRoot + "/" + document.getElementById("docname1").innerHTML;
    }

but i want to set it so that even if more file information is added, the function will display it too. i have already looked at Jquery xml parsing loops this question, but i couldn't get the function to work. Here's the XML file;

 <document_list>

<document>

    <document_name>Holidays.pdf</document_name><br />

    <file_type>.pdf</file_type> <br />

    <file_location>TEST</file_location> <br />

</document>

<document>

    <document_name>iPhone.jsNotes.docx</document_name><br />

    <file_type>.docx</file_type><br />

    <file_location>TEST</file_location><br />

</document>

 </document_list>

And this is the HTML i am using. There's a button and the <ul> tags i'm using;

<button onclick = "viewXMLFiles(); document.getElementById('showDocumentLink').style.display = 'block';">View Document Info</button><br>

    <div id = "doclist">
        <h2>Document 1;</h2>
        <label>Document Name;</label><br><span id = "docname"></span><br>
        <label>File Type</label><br><span id = "filetype"></span><br>
        <label>File Location</label><br><span id = "fileloc"></span><br>
    </div>

    <div id = "doclist">
        <h2>Document 2;</h2>
        <label>Document Name;</label><br><span id = "docname1"></span><br>
        <label>File Type</label><br><span id = "filetype1"></span><br>
        <label>File Location</label><br><span id = "fileloc1"></span><br>
    </div>

Can anyone help me put this into a loop? I have linked jQuery and jQTouch so i can use both of them.

Thank you so much in advance xx

like image 646
Megan Sime Avatar asked May 21 '26 22:05

Megan Sime


1 Answers

Use following loop code.

<script>
    xmlDoc = $.parseXML( xml ),
    $xml = $( xmlDoc );
    var documents = $xml.find('document_list');

    documents.children('document').each(function() {
      var name = $(this).find('document_name').text();
      var file_type = $(this).find('file_type').text();
      var file_location = $(this).find('file_location').text();

      // now do whatever you like with above variable
    });
</script>
like image 177
Irfan DANISH Avatar answered May 23 '26 10:05

Irfan DANISH