Robin Carlo Catacutan
Robin Carlo Catacutan

Reputation: 13679

Access XML data via javascript

How can I get the value of my xml data using a javascript. Im accessing my xml file on my domain, and view it on the client side.

my.xml

<usr>
  <uid trk="1234">
    <getThis>kdzbnya</getThis>
  </uid>
</usr>

I want to get the value of "getThis"

sample.js

function alertThis(){
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        var xmlFile = "my.xml";
        xmlDoc.async="false";
        xmlDoc.load(xmlFile);
        xmlObj=xmlDoc.documentElement;
        try {
            var v = "";
            $.each(xmlObj.childNodes, function(i, valThis) { 
                if(valThis.getAttribute("trk") == "1234"){
                    v += valThis.getElementsByTagName('getThis').nodeValue;
                }   
            });
             alert(v);
        }
        catch(e){
            alert(e);
        }
}

but it returns undefined value.

Upvotes: 0

Views: 6997

Answers (3)

ampersand
ampersand

Reputation: 4314

I see you're using jQuery.

change

v += valThis.getElementsByTagName('getThis').nodeValue

to

v += $(valThis).find('getThis').text()

Upvotes: 1

Jonathan Lonowski
Jonathan Lonowski

Reputation: 123463

Try adding a .item(0) or [0] between getElementsByTagName(...) and .nodeValue:

v += valThis.getElementsByTagName('getThis').item(0).nodeValue;

You'll need this as getElementsByTagName returns a NodeList (which can resemble an Array). The list won't have a nodeValue property itself, but the nodes within it should.

Upvotes: 2

dbrin
dbrin

Reputation: 15673

See this example http://www.w3schools.com/xml/xml_parser.asp of an XML parser. But in reality you probably want to use a framework to load the XML and parse it. There is plenty of them out there, check microjs.com for the features that you are looking for.

Upvotes: 1

Related Questions