c++ - IXSLTemplate::putref_stylesheet 返回 E_INVALIDARG

标签 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 会出现什么问题?

我的 pXslDoc 是一个 IXMLDOMDocument 我已经成功地从静态常量字符串加载了。

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

最佳答案

您是否正在加载 pXslDoc也许是异步的?

IXMLDOMDocument 的默认行为objects 是异步加载的,所以 pXslDoc 是可能的调用 putref_stylesheet() 时尚未完成加载.

在加载之前添加以下代码 pXslDoc会解决这个问题,如果这是你正在遭受的:

pXslDoc->put_async(VARIANT_FALSE);

关于c++ - IXSLTemplate::putref_stylesheet 返回 E_INVALIDARG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3658682/

相关文章:

c++ - std::multimap 中的 count() 和 find() 问题

c++ - 读取访问冲突,错误代码 0xFFFFFFFFFFFFFFFF

PHP 生成 RSS XML - 编码错误

java - 如何配置 jaxb setter?

c++ - 微软XML。获取数据为 Base64

c++ - getElementsByTagName() 不适用于 DOMDOCUMENT60 的特殊字符

C++ VS fatal error C1083 权限被拒绝

C++将局部变量存储到 vector 中可防止它在超出范围时被破坏

xml - VS Code XML 自动格式化

date - oNode 被设置为 Nothing,但这是为什么,我该如何解决?