Решил попробовать перейти с использования XMLHttpRequest на NsIXmlRpcClient и столкнулся со следующей проблемой. Никак не могу понять как получить результат(ответ от сервера) в виде XML. Конвертация "в лоб" типа "var resultXML = new XML(result)" не работает.
В примерах с NsIXmlRpcClient нашел следующий кусок кода
"listResult = result.QueryInterface(Components.interfaces.nsISupportsArray);"
но у меня оно выдает
"Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsISupports.QueryInterface]"
тут написано http://people.mozilla.com/~axel/doxygen/html/interfacensIXmlRpcClient.html
что для <struct> необходимо использовать nsIDictionary, но примеров работы с ним я к сожалению не нашел...
Поделитесь, пожалуйста, опытом.

Конвертация "в лоб" типа "var resultXML = new XML(result)" не работает.

если в result содежрится xml-текст, то перевести его в xml-объект можно так:

Выделить код

Код:

str_to_xml : function (str)
	{
		return (new DOMParser()).parseFromString(str, "text/xml");
	},

на всякий случай обратно:

Выделить код

Код:

xml_to_str : function (xml)
	{
		return (new XMLSerializer()).serializeToString(xml);
	},

в результате конвертирования таким способом получается пустой XML документ :cry:

у меня работало, для корневого элемента должен быть указан xmlns
тут есть другие примеры

Shutnik пишет

у меня работало, для корневого элемента должен быть указан xmlns
тут есть другие примеры

Работало в связке с NsIXmlRpcClient? Там в result похоже не текст, а объект какой-то...

Работало в связке с NsIXmlRpcClient? Там в result похоже не текст, а объект какой-то...

ну так определи какой сначала

вот рабочий пример:

Выделить код

Код:

function str_to_xml (str)
{
    return (new DOMParser()).parseFromString(str, "text/xml");
}

function xml_to_str (xml)
{
    return (new XMLSerializer()).serializeToString(xml);
}

var tmp = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "test");
tmp.setAttribute("foo", "bar");

var quux = document.createElement("quux");
quux.setAttribute("hello", "world");
tmp.appendChild(quux);

var xml = str_to_xml(xml_to_str(tmp)); // #document

alert(xml.firstChild.firstChild.getAttribute("hello")); // world