2009-03-06 10 views
3

XMLNotepad bietet den folgenden Text (zum Beispiel), wenn ein nicht-Transformation:MSXML: Wie erhält man programmatisch den Fehlertext für fehlgeschlagene Transformationen?

Transforming

Fehler XML
Die Variable oder Parameter 'gesättigt-background-color' wurde mit dem gleichen Import Vorrang dupliziert.

Wie würde ich diesen Fehlertext programmgesteuert erhalten? Mein Code sieht wie folgt aus:

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

Antwort

3

Wenn IXSLTemplateIErrorInfo unterstützt (AFAIK, es tut), dann können Sie, dass für zusätzliche Informationen abfragen.

(jeffamaphone clued mich auf die richtige Art und Weise in diese zu bekommen - mit der GetErrorInfo() API :)

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

Nein, es scheint nicht, dass die Schnittstelle zu unterstützen. QueryInterface() gibt E_NOINTERFACE zurück. –

+0

Das ist eine Schande. Sie könnten versuchen, IXMLDOMParseError, aber ich bin mir ziemlich sicher, dass nur von den DOMDocument-Klassen verwendet wird. – Shog9

+0

Ja, das hatte ich mir schon angeschaut. :( –