【问题标题】:IXSLTemplate::putref_stylesheet returns E_INVALIDARGIXSLTemplate::putref_stylesheet 返回 E_INVALIDARG
【发布时间】:2010-09-07 12:32:18
【问题描述】:

好吧,我已经迷路了好几个小时了......

IXSLTemplate::putref_stylesheet 没有记录除 E_FAIL 之外的任何错误。

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

但是我的代码与我在 web 和 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 我已经成功地从静态常量字符串加载。

有什么线索吗? (我想这是一个非常模糊的问题,但我已经搜索了几个小时)

【问题讨论】:

    标签: c++ xml msxml xslt


    【解决方案1】:

    您是否正在异步加载pXslDoc

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

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

    pXslDoc->put_async(VARIANT_FALSE);
    

    【讨论】:

    • 是的。我这样做是因为我在网上的例子上看到了它,但不知道为什么。谢谢你的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2023-03-13
    相关资源
    最近更新 更多