Uncaught TypeError: 'documentElement' of null

You must Login before you can answer or comment on any questions.

Hi guys,

On Android device I get the following error - Uncaught TypeError: Cannot read property 'documentElement' of null...

// CREATE AN ARRAY TO HOLD XML DATA 
var data = [];
 
// CREATE HTTP CLIENT
var xhr = Ti.Network.createHTTPClient();
 
// OPEN CONNECTION TO XML FILE
xhr.open('GET', 'http://www.gacreations.co.za/knysna/eventdays.xml');
 
// RETRIEVE XML DATA
xhr.onload = function() {
 
    var doc = this.responseXML.documentElement;
    var items = doc.getElementsByTagName("days");
    var x = 0;
 
    for (var c=0; c<items.length; c++) {
 
        var item = items.item(c);
 
        var day = item.getElementsByTagName("day").item(0).text;
        var month = item.getElementsByTagName("month").item(0).text;
 
        // CREATE TABLE ROW
        var row = Ti.UI.createTableViewRow({
            height: '60dp',
            hasChild: true,
            selectedBackgroundColor: '#f6da1e'
        });
 
        // CREATE CUSTOM ITEMS FOR ROW
        var labelDay = Ti.UI.createLabel({
            text: day,
            height: '22dp',
            left: '10dp',
            font: {fontSize: '16dp', fontWeight: 'bold'}
        });
        row.add(labelDay);
 
        var labelMonth = Ti.UI.createLabel({
            text: month,
            height: '22dp',
            left: '120dp',
            font: {fontSize: '16dp', fontWeight: 'bold'}
        });
        row.add(labelMonth);
 
        data[x++] = row;
 
 
    }
 
var tableview = Titanium.UI.createTableView({
    data:data
});
win.add(tableview);
 
    // CREATE EVENT LISTENER FOR TABLE VIEW
    tableview.addEventListener('click', function(e){
        var index = e.index;
 
        if (index == 0)
        {
            var w = Ti.UI.createWindow({
            url: 'days/dayone.js',
            title: '6 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 1)
        {
            var w = Ti.UI.createWindow({
            url: 'days/daytwo.js',
            title: '7 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 2)
        {
            var w = Ti.UI.createWindow({
            url: 'days/daythree.js',
            title: '8 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 3)
        {
            var w = Ti.UI.createWindow({
            url: 'days/dayfour.js',
            title: '9 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 4)
        {
            var w = Ti.UI.createWindow({
            url: 'days/dayfive.js',
            title: '10 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 5)
        {
            var w = Ti.UI.createWindow({
            url: 'days/daysix.js',
            title: '11 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 6)
        {
            var w = Ti.UI.createWindow({
            url: 'days/dayseven.js',
            title: '12 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 7)
        {
            var w = Ti.UI.createWindow({
            url: 'days/dayeight.js',
            title: '13 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 8)
        {
            var w = Ti.UI.createWindow({
            url: 'days/daynine.js',
            title: '14 July',
            navBarHidden: false
        });
        w.open();
        }
 
        if (index == 9)
        {
            var w = Ti.UI.createWindow({
            url: 'days/dayten.js',
            title: '15 July',
            navBarHidden: false
        });
        w.open();
        }
 
    });
 
}
 
xhr.send();
Is something wrong in my code? On emulator and my Galaxy S2 it works fine, but on some other devices it gives runtime error. Please help :(

1 Answer

Try:

var doc = Ti.XML.parseString(xml_string);

— answered 11 months ago by Darren Adams
answer permalink
7 Comments
  • Hi Darren, I will give this a try. What exactly does Ti.XML.parseString(xml_string) do differently? Thank you for the reply.

    — commented 11 months ago by Martin Joubert

  • Some have had more success using that method for parsing in Android. Be sure to substitute the response for xml_string.

    — commented 11 months ago by Darren Adams

  • Okay so I should just replace

    var doc = this.responseXML.documentElement
    with
    var doc = Ti.XML.parseString(xml_string)

    — commented 11 months ago by Martin Joubert

  • Show 4 more comments

Your Answer

Think you can help? Login to answer this question!