我是新手,拷贝了sdk中add()的一个小例子,想看一下效果,可是编译通不过!msxml3也装了,不知道是什么原因,等待中...
#import "msxml3.dll"
using namespace Msxml2;#define CHECK_AND_RELEASE(pInterface) 
if(pInterface) 
   {
pInterface->Release();
pInterface = NULL;
   }#define RELEASE(pInterface)  
   {
pInterface->Release();
pInterface = NULL;
   }BOOL DOMDocument2schemas()
{
   BOOL bResult = FALSE;
   short sResult = FALSE;
   IXMLDOMNodeList *pIXMLDOMNodeList=NULL;
   IXMLDOMDocument2 *pIXMLDOMDocument2=NULL;
   IXMLDOMSchemaCollection *pIXMLDOMSchemaCollection=NULL;
   HRESULT hr;
   BSTR bstrValue;
   VARIANT varValue;   try
   {
      hr=CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_SERVER,
         IID_IXMLDOMDocument2, (LPVOID*)(&pIXMLDOMDocument2));
      SUCCEEDED(hr) ? 0 : throw hr;      if(pIXMLDOMDocument2)
      {
         hr=pIXMLDOMDocument2->put_async(VARIANT_FALSE);
         if(SUCCEEDED(hr))
         {
            hr=CoCreateInstance(CLSID_XMLSchemaCache, NULL, CLSCTX_SERVER,
               IID_IXMLDOMSchemaCollection,
               (LPVOID*)(&pIXMLDOMSchemaCollection));
            SUCCEEDED(hr) ? 0 : throw hr;
            
            if(SUCCEEDED(hr) && pIXMLDOMSchemaCollection)
            {
               hr = pIXMLDOMSchemaCollection->add(_T("x-schema:books"),
                  _variant_t(_T("d:\\inetpub\\wwwroot\\bookschema.xml")));
               if(SUCCEEDED(hr))
               {
                  varValue.vt = VT_DISPATCH;
                  varValue.pdispVal = pIXMLDOMSchemaCollection;
                  hr=pIXMLDOMDocument2->putref_schemas(varValue);
                  
               // The document will load only if a valid schema is
               // attached to the xml file.
                  hr=pIXMLDOMDocument2->load(_variant_t(
                  _T("d:\\inetpub\\wwwroot\\samplexmldtd.xml")),
                  &sResult);
                  if(SUCCEEDED(hr) && (sResult==VARIANT_TRUE))
                  {
                     pIXMLDOMDocument2->get_xml(&bstrValue);
                     ::MessageBox(NULL, bstrValue, _T("Loaded Document"),
                        MB_OK);
                     bResult=TRUE;
                  }
               }
               RELEASE(pIXMLDOMSchemaCollection);
            }
         }
         RELEASE(pIXMLDOMDocument2);
      }
   }
   catch(...)
   {
      CHECK_AND_RELEASE(pIXMLDOMDocument2);
      CHECK_AND_RELEASE(pIXMLDOMNodeList);
      CHECK_AND_RELEASE(pIXMLDOMSchemaCollection);
      DisplayErrorToUser();
   }
   return bResult;
}