C# c中的大型xml到csv#
我需要将一个大约2gb的大型xml文件转换为csv。因此,我将遇到内存不足异常,因为xmldocument()无法将整个文件加载到内存中。我已经尝试过使用xml阅读器,但我不确定在没有xml的dtd的情况下如何使用它C# c中的大型xml到csv#,c#,.net,xml,csv,C#,.net,Xml,Csv,我需要将一个大约2gb的大型xml文件转换为csv。因此,我将遇到内存不足异常,因为xmldocument()无法将整个文件加载到内存中。我已经尝试过使用xml阅读器,但我不确定在没有xml的dtd的情况下如何使用它 我的代码是c#当您使用XmlReader时,默认情况下DTD处理被禁用。 与基本StreamWriter关联的XmlReader对我们来说非常有效,因为我们处理的文件大小约为200 mb。为什么您不能这样做 或者使用vtd xml 使用vtd xml应该非常简单Microsoft开
我的代码是c#当您使用XmlReader时,默认情况下DTD处理被禁用。 与基本StreamWriter关联的XmlReader对我们来说非常有效,因为我们处理的文件大小约为200 mb。为什么您不能这样做 或者使用vtd xml
使用vtd xml应该非常简单Microsoft开发人员使用XmlReader类解析xml只需在其代码中添加以下两行代码,即可防止XmlReader访问DTD声明中引用的URI:
settings.ProhibitDtd = false;
settings.XmlResolver = null;
其中设置是XmlReaderSettings类的实例。在遇到DTD引用时,为toProhibitDtd赋值为false将防止XmlReader引发异常,而将其设置为true则会导致读取器中止进一步的解析。将XmlResolver设置为null会导致读取器忽略外部引用的DTD。这允许读者解析整个xml文档,而无需访问外部引用的DTD
引自:
此外,OP指出dtd文件不可用。在这种情况下,将ProhibitDtd设置为false是不够的,因为如果找不到dtd文件,将引发异常。将XmlResolver设置为null可解决此问题。如果您运行64位,并希望快速修复OutOfMemoryException:转到项目属性->构建选项卡->平台目标:将“任意CPU”更改为“x64”
您可以在Xdocument中加载2GB XML文件。听起来像SSI的工作。您可以发布一个XML示例吗?如果这是累积的数据,将来会进一步增长,CSV对您的帮助不会太长。你可能想考虑切换到一个数据库。你将如何使用<代码> XMLordObj/<代码>?XML是用于顺序读取的,所以一般不需要将整个文件加载到内存中。我找不到任何教程。我如何使用dll,你有什么例子吗?或者任何我能更好理解的教程