Sto cercando di eseguire il debug di quello che sembra essere un problema di analisi XML nel mio codice. Ho isolato verso il basso per il seguente frammento di codice:Come posso determinare il motivo per cui una chiamata a IXMLDOMDocument :: load() non riesce?
HRESULT
CXmlDocument::Load(IStream* Stream)
{
CComVariant xmlSource(static_cast<IUnknown*>(Stream));
VARIANT_BOOL isSuccessful;
* HRESULT hr = m_pXmlDoc->load(xmlSource, &isSuccessful);
return (hr == S_FALSE) ? E_FAIL : hr;
}
Nota:m_pXmlDoc
è del tipo CComPtr<IXMLDOMDocument>
.
Sembra che la chiamata a IXMLDOMDocument::load()
(contrassegnata con *) non sia riuscita - IOW, restituisce S_FALSE
.
Non riesco a entrare in load()
per determinare perché non funziona, poiché si tratta di una chiamata COM.
Il metodo MSDN page per questo metodo non sembra fornire molte informazioni.
Ho alcune intuizioni:
- L'XML non è ben formato
- Il file XML è troppo grande (circa 120MB)
- è un problema relativo alla memoria (la dimensione di processo arriva a> 2 GB al momento del fallimento)
- NB: una chiave di registro è stata impostata per consentire la dimensione processo sia questo grande, come il più grande formato di processo valido per WinXP, per quanto ne so, è 2 GB).
Tutte le idee sul perché questa chiamata potrebbe essere fallendo?
Hai provato 'parseError'? http://msdn.microsoft.com/en-us/library/ms756041%28VS.85%29.aspx –