2009-03-06 4 views
3

XMLNotepad (örneğin) aşağıdaki metni içerir:MSXML: Hatalı dönüşümler için programlı olarak hata metni nasıl alınır? bir dönüşüm başarısız olduğunda

hata Transforming XML
aynı alma öncelik ile tekrarlanmıştır değişken veya parametre 'doymuş-arka plan rengi'.

Bu hata metnini program aracılığıyla alma konusunda nasıl giderim? Benim kod şöyle görünür: IXSLTemplate (AFAIK, öyle) IErrorInfo destekler

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! 
    } 
} 

cevap

3

, o zaman ek bilgi için bu sorgulayabilir.

(jeffamaphone bu almak için doğru yolda beni clued - GetErrorInfo() API :)

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

Hayır'ı kullanarak o arayüzü desteklemek için görünmüyor. QueryInterface(), E_NOINTERFACE değerini döndürür. –

+0

Bu utanç verici. IXMLDOMParseError'ı deneyebilirsiniz, ancak DOMDocument sınıfları tarafından kullanıldığından eminim. – Shog9

+0

Evet, şuna zaten bakmıştım. :( –