[thelist] Problems traversing XML tree in JavaScript

VOLKAN ÖZÇELİK volkan.ozcelik at gmail.com
Tue Aug 2 06:49:17 CDT 2005


Not surprisingly, mozilla (firefox) and ie define XHR (XmlHttpRequest)
differently.

To work things correct you may use a wrapper:

_this = XHRequest.prototype;
function XHRequest(){}
_this.getObject = function() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
        alert("XML HTTP Request support cannot be found!");
        return null;
    }
};

var XHR = new XHRequest();

you can now use XHR just the same way you use XMLHTTPRequest.

[
Code extracted from my somewhat-related article
(http://www.codeproject.com/jscript/PseudoPopUp.asp)
]

Hope I understood correctly and hope that helps.

Volkan.

On 8/2/05, Paul Waring <paul at xk7.net> wrote:
> I've currently got a relatively simple XML file that is structured like
> so:
> 
> <?xml version="1.0" ?>
> <sites>
>        <site id="10">Site name 1</site>
>        <site id="11">Site name 2</site>
>        [several more lines like the above]
> </sites>
> 
> I've managed to get JavaScript to read in the whole file, using some
> code that I found on Site Point, and I'm getting the document using:
> 
> response = req.responseXML.documentElement;
> 
> where req is an instance of XMLHttpRequest() (or ActiveXObject in IE,
> but I'm testing in Firefox first just to see if I can get *something* to
> work). This is only set after I've checked that req.readyState is equal
> to 4 and the response code is 200 (i.e. everything's gone ok with
> regards to reading the document in). I then have the following two lines
> of code, just for testing at the moment:
> 
> var sites = response.getElementsByTagName('sites');
> var sites2 = response.getElementsByTagName('site');
> 
> Based on what I've read the getElementsByTagName() function to do, I
> expect the first line to get back an array of one element containing
> the first (and in this case only) <sites> tag, which I could then use to
> further traverse the tree using sites[0].getElementsByTagName('site').
> However, sites is being set to an undefined value and printing its
> length gives 0, but sites2 is being set to an array of size 41, which is
> correct.
> 
> Have I done something obviously wrong? It seems to me like response is
> already pointing to what I would expect sites[0] to be, but I want it to
> instead hold the root of the XML document otherwise when I add extra
> stuff later I won't be able to traverse it properly. I honestly don't
> understand why this isn't working as I've just taken the majority of the
> code from an article[1] and simply changed the names to reflect my
> document structure.
> 
> Thanks in advance,
> 
> Paul
> 
> [1] http://www.sitepoint.com/print/xml-javascript-mozilla
> 
> --
> Rogue Tory
> http://www.roguetory.org.uk
> 
> 
> --
> 
> * * Please support the community that supports you.  * *
> http://evolt.org/help_support_evolt/
> 
> For unsubscribe and other options, including the Tip Harvester
> and archives of thelist go to: http://lists.evolt.org
> Workers of the Web, evolt !
> 
> 
>


More information about the thelist mailing list