Skip to content Skip to sidebar Skip to footer

Getting All The Data In An Xml Via Javascript

Trying to spool out all the post and also all the comment for each post from the DB using ajax/javascript. I'm getting the actual data from the DB via ajax correctly but having iss

Solution 1:

I think you might want to change your XML structure to something like this ..

<posts><post><author><name>John Doe</name><acctype>Admin</acctype></author><time>09/07/2013</time><msg>This is a message</msg><img><url>post_img.jpg</url></img><comments><comment><author><name>John Smith</name><acctype>basic</acctype></author><time>09/07/2013</time><content>comment number 1</content></comment><comment><author><name>Jane Doe</name><acctype>basic</acctype></author><time>09/07/2013</time><content>comment number 1</content></comment></comments></post><post>
       ......
    <post></posts>

And then you can have your JavaScript as follows ...

var post_holder_div = document.getElementById('status_update_msg_area');
post_holder_div.innerHTML = '';

var posts = xmlDom.getElementsByTagName("post"), domString = '';
for (var i = 0; i < posts.length; i++) {
    var poster = posts[i].getElementsByTagName('author')[0].childNodes[0].textContent,
        message = posts[i].getElementsByTagName('msg')[0].textContent,
        time = posts[i].getElementsByTagName('time')[0].textContent,
        comments = posts[i].getElementsByTagName('comments')[0].childNodes;

    domString += '<p><strong>Poster name:</strong> ' + poster + '</p>';
    domString += '<p><strong>Post:</strong> ' + message + '</p>';

    if (comments.length) {

        domString += '<h4>Comments</h4>';

        for (var j = 0; j < comments.length; j++) {
            var commenter = comments[j].getElementsByTagName('author')[0].childNodes[0].textContent,
                comment = comments[j].getElementsByTagName('content')[0].textContent;

            domString += '<p>' + commenter + ': <em>' + comment + '</em></p>';

        }
    }

}

post_holder_div.innerHTML = domString;

This should give you a rough idea. With the comments you want to have them nested i.e. <comment/> as a subchild of <comments/>. is to as is to

NB: Of course the JS code could be refactored and be neater but this is just help you on your way.

I hope this helps :)

Post a Comment for "Getting All The Data In An Xml Via Javascript"