我想調試我的代碼中看起來是XML解析問題。我已經分離下來的下面的代碼片段:如何確定爲什麼對IXMLDOMDocument :: load()的調用失敗?
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;
}
注:m_pXmlDoc
是類型CComPtr<IXMLDOMDocument>
的。
看起來,撥打IXMLDOMDocument::load()
(標有*)的呼叫失敗 - IOW,它返回S_FALSE
。
我不能進入load()
來確定它失敗的原因,因爲它是一個COM調用。
該方法的MSDN page似乎沒有給出很多見解。
我有一些預感:
- XML是沒有很好地形成
- XML文件過大(約120MB)
- 這是一個內存相關的問題(進程大小到達> 2GB在故障時間)
- 注:註冊表項已被設置爲允許進程大小是這個大,作爲最大有效處理大小的WinXP,據我所知,是2GB)。
任何想法,爲什麼這個調用可以失敗?
你嘗試過'parseError'嗎? http://msdn.microsoft.com/en-us/library/ms756041%28VS.85%29.aspx – 2010-01-27 02:47:12