MSXML: كيف يمكن للمرء برمجيا الحصول على نص الخطأ عن التحويلات فشلت؟

StackOverflow https://stackoverflow.com/questions/619787

  •  03-07-2019
  •  | 
  •  

سؤال

و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!
    }
}
هل كانت مفيدة؟

المحلول

إذا IXSLTemplate يدعم IErrorInfo (AFAIK، فإنه لا)، ثم يمكنك الاستعلام أن للحصول على معلومات إضافية.

و(jeffamaphone يشكون لي في الطريقة الصحيحة للحصول على هذا - باستخدام API GetErrorInfo():)

CComPtr<IErrorInfo> error;
if (SUCCEEDED( GetErrorInfo(0, &error) ) && error)
{
   // call IErrorInfo::GetDescription(), etc.
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top