Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№131-07-2008 17:53:23

oldfriend
Участник
 
Группа: Members
Зарегистрирован: 24-07-2008
Сообщений: 22
UA: Firefox 2.0

Получить полный текст страницы в XPCOM копоненте

Подобная тема уже обсуждалась:
http://forum.mozilla-russia.org/viewtopic.php?id=8417

javascript это делает так:

Выделить код

Код:

var cont = window.getBrowser().contentDocument;
	var ser = new XMLSerializer();
	var st = ser.serializeToString(cont);

Мне нужно получить все то же самое только из С++ кода и именно в таком же виде, то есть не просто содержимое между [html] и [/html], а все, все, все, даже если страница с ошибкой и что-то записано вне этого тега + <!DOCTYPE и прочее

Сейчас я просто передаю строку st в XPCOM компоненту, но это решение не совсем красивое, потому как совершенно точно должен быть способ получить всю DOM структуру документа посредсвом интерфейсов Mozilla

Я уже могу получить nsIDOMDocument и nsIDOMWindow, но что-то с ними не все так просто ...

Подскажите, пожалуйста, как быть.

Отсутствует

 

№231-07-2008 19:37:21

oldfriend
Участник
 
Группа: Members
Зарегистрирован: 24-07-2008
Сообщений: 22
UA: Firefox 2.0

Re: Получить полный текст страницы в XPCOM копоненте

Решение, господа.
NS_IMETHODIMP MyComponent::GetDOM(nsIDOMDocument *doc, PRInt32 *_retval)

Выделить код

Код:

{
	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;
}

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]