MSXML:如何以编程方式获取失败转换的错误文本?

时间:2009-03-06 17:55:06

标签: winapi xslt msxml

XMLNotepad在转换失败时提供以下文本(例如):

  

错误转换XML
  变量   或参数   '饱和背景色'是   重复使用相同的导入   优先级。

如何以编程方式获取此错误文本?我的代码如下所示:

CComPtr<IXSLTemplate> tmpl;
HRESULT hr = CoCreateInstance(CLSID_XSLTemplate, NULL, CLSCTX_INPROC_SERVER, IID_IXSLTemplate, (void**)&tmpl);
if (SUCCEEDED(hr)) {
    hr = tmpl->putref_stylesheet(xslt_doc);
    if (SUCCEEDED(hr)) {
    // Huzzah; do stuff.
    } else {
    // How do I get the error text?  I want to log it!
    }
}

1 个答案:

答案 0 :(得分:3)

如果IXSLTemplate支持IErrorInfo(AFAIK,它确实如此),那么您可以查询该信息以获取更多信息。

(jeffamaphone通过正确的方式让我知道了 - 使用GetErrorInfo() API:)

CComPtr<IErrorInfo> error;
if (SUCCEEDED( GetErrorInfo(0, &error) ) && error)
{
   // call IErrorInfo::GetDescription(), etc.
}