Страницы: 1
Решил попробовать перейти с использования 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, но примеров работы с ним я к сожалению не нашел...
Поделитесь, пожалуйста, опытом.
UNBENDING
Отсутствует
Конвертация "в лоб" типа "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); },
Отсутствует
у меня работало, для корневого элемента должен быть указан xmlns
тут есть другие примеры
Работало в связке с NsIXmlRpcClient? Там в result похоже не текст, а объект какой-то...
UNBENDING
Отсутствует
Работало в связке с 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
Отсутствует
Страницы: 1