大数据XML文件(超过20GB的文件大小)将转换为JSON文件



我有一个XML文件。我想用C#将其转换为JSON。但是,XML文件超过20 GB。

我尝试使用XMLReader读取XML,然后将每个节点附加到JSON文件。我写了以下代码:

var path = @"c:result.json";
TextWriter tw = new StreamWriter(path, true, Encoding.UTF8);
tw.Write("{"A":");
using (XmlTextReader xmlTextReader = new XmlTextReader("c:\muslum.xml"))
{
    while (xmlTextReader.Read())
    {
        if (xmlTextReader.Name == "A")
        {
            var xmlDoc = new XmlDocument();
            var v = xmlTextReader.ReadInnerXml();
            string json = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc, Newtonsoft.Json.Formatting.None, true);
            tw.Write(json);
        }
    }
}
tw.Write("}");
tw.Close();

此代码不起作用。转换JSON时,我会遇到错误。是否有最佳方法执行转换?

我会以以下方式做

  • 使用XSD.exe

  • 生成XSD模式的类
  • 打开文件并读取顶级(i e您的文档级别)标签一个一个(使用XMLTEXTREADER或XMLREADER)

  • 使用生成的类序列化每个标签

  • 对json的供应对象,并保存到任何

  • 考虑保存1000-2000标签的批次

  • 您对序列化/值得序列化是正确的。仍在多个线程中进行工作,最好使用TPL可以为您提供良好的速度。还请考虑使用JSON.NET序列化器,它确实比标准器快得多(web.api是标准的)

如果您需要,我可以在早上放一些代码片段。我们正在处理以这种方式处理大型(1-10GIGS)文件,以便将数据保存到SQL Server数据库。

最新更新