This tutorial teaches how to read and differentiate different type of XML Nodes.
There are 3 important XML data parts.
  1. Element - Elements have tags. In above example bookstore, book, title, author are elements
  2. Attribute - These are attributes for Elements. In above example category is attribute.
  3. Text - Simple text surrounded by tags

Program Flow :

  1. Read ROOT Element as Node
  2. If it is Text, go to 3rd step else go to 4th step.
  3. print text value
  4. If it is Element, print all attributes and list children and send them to 2nd step

XML Node Types :

Node Node Type Named Constant
Element 1 ELEMENT_NODE
Attribute 2 ATTRIBUTE_NODE
Text 3 TEXT_NODE

JavaScript Code :

Here you can find JavaScript source code parse XML. In below code you can find some individual functions. Those are explained below
readNode : It will parse all type of XML nodes
trimSpace : This function removes all unwanted space from the XML
loadXMLDoc : This function is for loading XML document 
var parseXml;

var res = '';

if (window.DOMParser) {
    parseXml = function(xmlStr) {
        return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
    };
} else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) {
    parseXml = function(xmlStr) {
        var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xmlStr);
        return xmlDoc;
    };
} else {
    parseXml = function() { return null; }
}


var xmlDoc = parseXml(trimSpace(loadXMLDoc("books.xml")));

x=xmlDoc.documentElement;

readNode(x);

document.getElementById("result").innerHTML = res;

function readNode(node) {
    res+=" <br/>";
    res+=" (nodetype: " + node.nodeType + ") ";
    if(node.nodeType == 1) {
        res+="Nodename: " + node.nodeName;
        var y=node.childNodes;
        for(var i=0;i<y.length;i++)
        {
            readNode(y[i]); 
        }
    } else if(node.nodeType == 2) {
        res+="Nodename: " + node.nodeName;
    } else if(node.nodeType == 3) {
        res+="Nodevalue: " + node.textContent+ "";
    }
    res+=" <br/>";
}

function trimSpace(val) {
    var lines = val.split('\n');
    var out='';
    for(var i = 0;i < lines.length;i++){
        out += lines[i].trim();
    }
    return out;
}

function loadXMLDoc(file) {
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET",file,false);
    xmlhttp.send();

    return xmlhttp.responseText;
}

0 comments:

Blogroll

Follow this blog by Email

Popular Posts