2013-06-13 1 views
0

Есть ли простой способ взять IStream документа XML, а затем загрузить его в файл IXMLDOMDocument (msxml)? Предпочтительно, не записывая поток на диск.IStream to MSXML DOMDocument

ответ

1

Проверьте this вне! More example.

std::istream на основе ISequentialStream пример реализации: link. (ISequentialStream - базовый класс IStream).

// VARIANT_TRUE != TRUE !!!!!!!!!!! 
VARIANT_BOOL retval = VARIANT_TRUE; 
// document object created by CoCreateInstance 
IXMLDOMDocument* xml_doc; 
// own ISequentialStream/IStream instance (like example) 
ISequentialStream* streamaddress; 
// variant: could be IStream, ISequentialStream or IPersistStream 
VARIANT xmlSource; 
// variant init 
VariantInit(&xmlSource); 
// your object is an IUnknown interface 
xmlSource.vt = VT_UNKNOWN; 
// set its address 
xmlSource.punkVal = streamaddress; 
// load XML from stream 
if ((xml_doc->load(xmlSource,&retval) == S_OK) && (retval == VARIANT_TRUE)) { 
    // done 
} 

VARIANT_TRUE