2

I am trying to use data extracted from a XML file by getElementByTagName and it returns HTML Collection Object but I need this data for a sending a REST request so I need to get the HTML Collection Object to be converted into a string. How can it be done?

Here's more information:

com_zimbra_om.prototype._responseHandler=
        function(response){
                try{
                    sid = response.xml.getElementsByTagName("session_id");
                    this.login_user();
                    }catch(e){
                            this._showErrorMsg(e);
                            }

Using this function I am trying to get the session_id from a REST response. Here sid (global variable) is the HTML Collection Object. Now when I try to use this in the next function:

com_zimbra_om.prototype.login_user = function(){
var url = selected_server + 'services/UserService/loginUser?SID=' +
                                    sid + '&username='+
                                    selected_username +
                                    '&userpass=' + 
                                    selected_password;
                var request_url = ZmZimletBase.PROXY + AjxStringUtil.urlComponentEncode(url);

So here I am using sid which I need as a string.

So how should I convert HTML Collection Object into string??

Thanks

Ankur Ankan
  • 2,953
  • 2
  • 23
  • 38
  • 3
    And how exactly should the string representation of such a collection look like? Please be more precise and provide some example code with input and output. – Felix Kling Jun 20 '12 at 18:27
  • I doubt you get a HTMLCollection from a XML document... – Bergi Jun 20 '12 at 18:31
  • @Bergi `document.getElementsByTagName("div") + ""` in firefox gives that, see https://bugzilla.mozilla.org/show_bug.cgi?id=14869 – Esailija Jun 20 '12 at 18:34
  • You can also run `var a = DOMParser(); var xml = ""; xml = a.parseFromString(xml, "application/xml" ); xml.getElementsByTagName("node") + ""; //"[object HTMLCollection]"` To see it's not any different with XML document. – Esailija Jun 20 '12 at 18:38
  • @Esailija: OK, thanks for the bug link. I expected NodeLists, too (as it happens to work in Opera for example :-) – Bergi Jun 20 '12 at 18:46

1 Answers1

9

With this information I can only go with

var objectHTMLCollection = document.getElementsByTagName("div"),
    string = [].map.call( objectHTMLCollection, function(node){
        return node.textContent || node.innerText || "";
    }).join("");
Esailija
  • 138,174
  • 23
  • 272
  • 326