我正在使用IXMLDOMDocument::transformNode
看起来有点像这样的 C++ 代码应用 XSLT 转换:
CComPtr<IXMLDOMDocument2> spXMLDoc;
// load spXMLDoc
CComPtr<IXMLDOMDocument2> spXSLDoc;
// load spXSLDoc
BSTR *pResult;
HRESULT hr = spXMLDoc->transformNode( spXSLDoc, pResult );
if (FAILED(hr))
{
// Handle me
}
此代码有效,但是如果转换失败,那么我不知道如何获取有关它失败的位置或原因的任何信息 - 目前它失败(在具有多个包含的复杂 XSLT 上),HRESULT 为E_FAIL
- 有什么办法我可以更详细地了解它为什么会失败?
我已经尝试过该parseError
属性以获取更多错误详细信息:
IXMLDOMParseError *parseError = NULL;
hr = spXMLDoc->get_parseError(&parseError);
if ( !FAILED( hr ) )
{
long errorCode = 0;
hr = parseError->get_errorCode(&errorCode);
// etc...
调用get_parseError
成功,但是调用get_errorCode
失败并显示 HRESULT S_FALSE
,表明没有解析错误。 这个页面告诉我有两种类型的错误——解析错误和运行时错误。它显示了如何处理这两者,但似乎是面向 JavaScript 的——在我的例子中,没有抛出 C++ 运行时错误。