954,568 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Parse a XML element with AJAX

I need to parse a element from a XML file:


45
67


98
89

So I try to read and put in a html element the first value of b with the next code:

document.getElementById("apDiv3").innerHTML=xmlDoc.getElementsByTagName("b")[0].data;

or

document.getElementById("apDiv3").innerHTML=xmlDoc.getElementsByTagName("b")[0].value;


and I get a undefined message.Where is the problem?

Alexandro
Light Poster
26 posts since Sep 2006
Reputation Points: 10
Solved Threads: 0
 

Your XML file is not proper, there can be only one root element. Also since you have not posted the entire code, I would give you a small example on how to go about things:

// Javascript file

<html>
<head>
    <title>XML DOM</title>
    <script type="text/javascript">
    
    var xmlDoc;
    function parse()
    {
        alert('in parse');
        if(window.ActiveXObject)
        {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.load("notes.xml");
            display();
        }
        else if(document.implementation.createDocument)
        {
            xmlDoc = document.implementation.createDocument("", "", null);
            xmlDoc.load("notes.xml");
            xmlDoc.onload = display;
        }
        else
        {
            alert("Browser doesn't support XML DOM manipulation");
        }
        alert('out parse');
    }
    function display()
    {
        alert('In display');
        document.getElementById('b1').innerHTML = xmlDoc.getElementsByTagName("b")[0].childNodes[0].nodeValue;
        document.getElementById('c1').innerHTML = xmlDoc.getElementsByTagName("c")[0].childNodes[0].nodeValue;
        document.getElementById('b2').innerHTML = xmlDoc.getElementsByTagName("b")[1].childNodes[0].nodeValue;
        document.getElementById('c2').innerHTML = xmlDoc.getElementsByTagName("c")[1].childNodes[0].nodeValue;
    }
    </script>
</head>
<body onload="parse();">
    <p>b1: <span id="b1"></span></p>
    <p>c1: <span id="c1"></span></p>
    <p>b2: <span id="b2"></span></p>
    <p>c2: <span id="c2"></span></p>
</body>
</html>
// XML Document

<root>
    <a>
        <b>100</b>
        <c>200</c>
    </a>
    <a>
        <b>300</b>
        <c>400</c>
    </a>
</root>


In case of any queries, do ask again.

~s.o.s~
Failure as a human
Administrator
11,938 posts since Jun 2006
Reputation Points: 3,281
Solved Threads: 734
 

thanks you , your example help me.
Yes I know about only one root element.The xml code it was just a example inside the root elemet to understand what I want.

Alexandro
Light Poster
26 posts since Sep 2006
Reputation Points: 10
Solved Threads: 0
 

I am back with an other question.

I want to put the xml elements values using a for cycle in input fields

for(i=2,i<13) 
input_element.value=xmlDoc.getElementsByTagName("c")[i].childNodes[0].nodeValue;


I want that input_element to be a variable that depend on i, and in function of i to represent a real html input element value.
Can you give me a solution?

Alexandro
Light Poster
26 posts since Sep 2006
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You