Как может я определять почему вызов к IXMLDOMDocument:: загрузка () сбои?

Я пытаюсь отладить то, что, кажется, XML, анализирующий проблему в моем коде. Я изолировал его вниз к следующему фрагменту кода:

HRESULT
CXmlDocument::Load(IStream* Stream)
{
    CComVariant xmlSource(static_cast(Stream));
    VARIANT_BOOL isSuccessful;
  * HRESULT hr = m_pXmlDoc->load(xmlSource, &isSuccessful);
    return (hr == S_FALSE) ? E_FAIL : hr;
}

Примечание: m_pXmlDoc имеет тип CComPtr.

Кажется что вызов к IXMLDOMDocument::load() (отмеченный с *), перестал работать - IOW, он возвращается S_FALSE.

Я не могу ступить в load() определить, почему это перестало работать, поскольку это - вызов COM.

Страница MSDN для этого метода, кажется, не дает большое понимание.

У меня есть несколько догадок:

  • XML не правильно построен
  • XML-файл является слишком большим (приблизительно 120 МБ)
  • Это - связанная с памятью проблема (размер процесса добирается до> 2 ГБ во время отказа),
    • NB: ключ реестра был установлен позволить размеру процесса быть этим большим, как самый большой допустимый размер процесса для WinXP, AFAIK, составляет 2 ГБ).

Какие-либо идеи относительно того, почему этот вызов мог перестать работать?

5
задан LeopardSkinPillBoxHat 27 January 2010 в 02:37
поделиться

1 ответ

Следующий код будет получать определенную ошибку анализатора с DOM и ее местоположения в источнике XML.

CComPtr<IXMLDOMParseError> pError;
CComBSTR sReason, sSource;
long nLine = 0, nColumn = 0;

m_pXmlDoc->get_parseError(&pError);
if(pError)
{
    pError->get_reason(&sReason);
    pError->get_srcText(&sSource);
    pError->get_line(&nLine);
    pError->get_linepos(&nColumn);
}

Срезон будет заполнен сообщением об ошибке. Ssource будет содержать ошибочную линию источника в XML. NLINE и ncolumn должен быть установлен на номер линии и столбец ошибки, хотя на практике эти два не всегда установлены надежно (IIRC, это особенно верно для ошибок валидации, а не парсер / хорошо сформированы).

10
ответ дан 13 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: