好吧,我失去了几个小时......
IXSLTemplate::putref_stylesheet
不会记录除E_FAIL之外的任何错误。
但在我的情况下,putref_stylesheet
会返回E_INVALIDARG
。 GetErrorInfo()
只是多余的告诉我“论证无效”。所以我没有留下太多信息。
然而,我的代码非常接近我在网络和msdn上找到的所有示例。 它的确如下:
void xsltProcessing(MSXML2::IXMLDOMDocument* pXmlDoc, MSXML2::IXMLDOMDocument * pXslDoc)
{
IXSLTemplatePtr pTemplate;
pTemplate.CreateInstance( _T( "Msxml2.XSLTemplate" ));
pTemplate->putref_stylesheet(pXslDoc);
//...
}
由于putref_stylesheet
没有太多文档。你知道它返回E_INVALIDARG
会出现什么问题吗?
我的pXslDoc
是IXMLDOMDocument
我已经从静态const字符串加载成功。
有任何线索吗? (我想这个问题非常模糊,但我需要几个小时才能找到)
答案 0 :(得分:1)
您是否异步加载pXslDoc
?
IXMLDOMDocument
个对象的默认行为是异步加载,因此当您调用pXslDoc
时,putref_stylesheet()
可能尚未完成加载。
在加载pXslDoc
之前添加以下代码可以解决此问题,如果这是您所遇到的问题:
pXslDoc->put_async(VARIANT_FALSE);