实际上我正在尝试通过一个巨大的Xml
到我的存储过程,但我总是得到一个输出of memory exception
,因为我想通过string
其大小限制为 2G。那么这样的事情有没有办法呢。
不要使用XmlDocument
- 将 DOM 完全加载到内存中将需要大约 10 倍于源文档的内存量。
Use XmlReader
and XmlWriter
, or XDocument
如果您需要在将文档传递给 SQL 之前对其进行操作。这些之所以有效,是因为它们将进行流式处理(特别是 XmlReader/XmlWriter,它们针对 XML 数据的只进读取进行了大量优化),而不是尝试一次加载整个文档及其 DOM(如 XmlDocument)。
从文件加载格式良好的 XML:
command.Parameters.Add(new SqlParameter("@xmlParameterName", SqlDbType.Xml)
{
Value = new SqlXml(XmlReader.Create("C:\\path\\to\\file.xml"));
});
从流中加载 XML 数据
Stream s;
// XML is in this stream
command.Parameters.Add(new SqlParameter("@xmlParameterName", SqlDbType.Xml)
{
Value = new SqlXml(XmlReader.Create(s));
});
从 XDocument 加载:
XDocument xd = XDocument.Load/.Parse/etc....
command.Parameters.Add(new SqlParameter("@xmlParameterName", SqlDbType.Xml)
{
Value = new SqlXml(xd.Root.CreateReader());
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)