我有一个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数据库。