dsp_099
dsp_099

Reputation: 6121

How to get the text value of an XML node in IE8?

So I have an XML feed that returns a bunch of results. First I create an XML parser as outlined in faino's answer here.

The XML parses just fine. Every result looks like this:

<result>
 <title>some title</title>
 <bid>0.05123</bid>
 <description>some desc</description>
</result>

So I have:

// parse
var xmlParser = returnXMLParser();
var resultsDoc = xmlParser(adXML.responseData); // #document
var listings = resultsDoc.getElementsByTagName('listing'); // returns 8-10
// get title node
var title = listings[0].getElementsByTagName('title')[0];
title.nodeType // 1
title.nodeName // "title"

Here's the problem though, I have tried every property imaginable to get the inner text: textConent, innerText, innerHTML, nodeValue - none of them seem to work in IE8.

The same script works perfectly fine in Chrome / FF using .textContent

Help!

Upvotes: 1

Views: 1538

Answers (1)

Mouser
Mouser

Reputation: 13304

A cross-browser backwards-compatible script:

function getXMLContent(obj,action)
{

    //cross-browser get and set for xmlContent
    if (obj)
    {
        if (action == "get") //get
        {
            if(obj.textContent)
            {
                return obj.textContent;
            }
            else
            {
                return obj.text;
            }
        }
        else //set
        {
            if(obj.textContent)
            {
                obj.textContent = action;
            }
            else
            {
                obj.text = action;
            }
        }
    }
    else
    {
        throw new Error("XML-Element doesn't exist.");
    }
}

In my own AJAX-calls where I retrieve XML I always use this function to retrieve to content of the node.

Upvotes: 6

Related Questions