Доступ к XML DOM через Internet Explorer
Есть такая ситуация. Есть уже загруженный в IE XML файл. Есть плагин написанный на Win32 API. Плагину надо каким-то образом получить доступ к XML DOM модели этого документа (т.е. что-то похожее на получение IHTMLDocument2 интерфейса). Если у кого есть какие соображения - просьба писать.
Попробуй так (это консольное приложение, на MSVC++6.0), только этот пример создает XML-ку. Но, я думаю, прочитать XML - можно без труда, если порыться по MSDN-у. По некоторым причинам, не могу переслать пример чтения, так как новый писать не хочется - а старый - закрытый код (не для чужих глаз)
#include "stdafx.h"
#import "msxml3.dll" named_guids
using namespace MSXML2;
int main(int argc, char* argv[])
{
IXMLDOMDocument2Ptr pXMLDoc = NULL;
IXMLDOMParseError* pError = NULL;
IXMLDOMNodeListPtr pNodeList = NULL;
IXMLDOMElementPtr pElement = NULL;
IXMLDOMNodePtr pChild = NULL;
IXMLDOMNodePtr pName = NULL;
HRESULT hr;
_variant_t vDocName( "proba.xml" );
_variant_t vNodeType;
hr = CoInitialize( NULL );
hr = CoCreateInstance( CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,
IID_IXMLDOMDocument, (void**)&pXMLDoc );
if( SUCCEEDED( hr ) ) {
vNodeType = (short)(NODE_ELEMENT);
pElement = pXMLDoc -> createNode( vNodeType, OLESTR( "proba" ), OLESTR( "" ) );
pChild = pXMLDoc -> createNode(vNodeType, OLESTR( "proba" ), OLESTR( "" ));
pElement -> appendChild( pChild );
pXMLDoc -> appendChild( pElement );
pElement -> appendChild( pElement);
pElement= pElement->firstChild;
pChild = pXMLDoc -> createTextNode( OLESTR( "sample" ) );
pElement-> appendChild( pChild );
pName = pXMLDoc -> createNode(vNodeType, L"name", L"");
pElement-> appendChild( pName );
pChild = pXMLDoc -> createTextNode( OLESTR( "sample2" ) );
pElement-> appendChild( pChild );
hr = pXMLDoc -> save( vDocName );
}
CoUninitialize( );
return 0;
}