>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Получить полный текст страницы в XPCOM копоненте http://forum.mozilla-russia.org/viewtopic.php?id=25361 |
oldfriend > 31-07-2008 17:53:23 |
Подобная тема уже обсуждалась: javascript это делает так: Выделить код Код:var cont = window.getBrowser().contentDocument; var ser = new XMLSerializer(); var st = ser.serializeToString(cont); Мне нужно получить все то же самое только из С++ кода и именно в таком же виде, то есть не просто содержимое между [html] и [/html], а все, все, все, даже если страница с ошибкой и что-то записано вне этого тега + <!DOCTYPE и прочее Сейчас я просто передаю строку st в XPCOM компоненту, но это решение не совсем красивое, потому как совершенно точно должен быть способ получить всю DOM структуру документа посредсвом интерфейсов Mozilla Я уже могу получить nsIDOMDocument и nsIDOMWindow, но что-то с ними не все так просто ... Подскажите, пожалуйста, как быть. |
oldfriend > 31-07-2008 19:37:21 |
Решение, господа. Выделить код Код:{ nsresult rv; nsCOMPtr<nsIDOMSerializer> pSerializer = do_CreateInstance(NS_XMLSERIALIZER_CONTRACTID, &rv); nsEmbedString nsHtml; pSerializer->SerializeToString(doc, nsHtml); nsEmbedCString strOut; NS_UTF16ToCString(nsEmbedString(nsHtml), NS_CSTRING_ENCODING_UTF8, strOut); std::stringstream ss; ss << strOut.get(); MessageBox(NULL, ss.str().c_str(), "", MB_OK); return NS_OK; } |