【发布时间】:2011-01-09 19:05:25
【问题描述】:
我正在尝试调试我的代码中出现的 XML 解析问题。我已将其隔离为以下代码 sn-p:
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 AFAIK 的最大有效进程大小为 2GB。
关于为什么此调用可能会失败的任何想法?
【问题讨论】:
-
你试过
parseError吗? msdn.microsoft.com/en-us/library/ms756041%28VS.85%29.aspx