IXSLTemplate :: putref_stylesheet返回E_INVALIDARG

时间:2010-09-07 12:32:18

标签: c++ xml msxml xslt

好吧,我失去了几个小时......

IXSLTemplate::putref_stylesheet不会记录除E_FAIL之外的任何错误。

但在我的情况下,putref_stylesheet会返回E_INVALIDARGGetErrorInfo()只是多余的告诉我“论证无效”。所以我没有留下太多信息。

然而,我的代码非常接近我在网络和msdn上找到的所有示例。 它的确如下:

void xsltProcessing(MSXML2::IXMLDOMDocument* pXmlDoc, MSXML2::IXMLDOMDocument * pXslDoc)
{
    IXSLTemplatePtr pTemplate;
    pTemplate.CreateInstance( _T( "Msxml2.XSLTemplate" ));
    pTemplate->putref_stylesheet(pXslDoc);
    //...
}

由于putref_stylesheet没有太多文档。你知道它返回E_INVALIDARG会出现什么问题吗?

我的pXslDocIXMLDOMDocument我已经从静态const字符串加载成功。

有任何线索吗? (我想这个问题非常模糊,但我需要几个小时才能找到)

1 个答案:

答案 0 :(得分:1)

您是否异步加载pXslDoc

IXMLDOMDocument个对象的默认行为是异步加载,因此当您调用pXslDoc时,putref_stylesheet()可能尚未完成加载。

在加载pXslDoc之前添加以下代码可以解决此问题,如果这是您所遇到的问题:

pXslDoc->put_async(VARIANT_FALSE);