I need to parse a element from a XML file:

<a>
<b>45</b>
<c>67</c>
</a>

<a>
<b>98</b>
<c>89</c>
</a>

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?

Recommended Answers

All 3 Replies

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.

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.

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?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.