我有一个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时遇到错误。有没有最好的方法来执行转换?
答案 0 :(得分:2)
我会按照以下方式进行
使用xsd.exe
打开文件并逐个阅读顶级(即文档级别)标签(使用XmlTextReader或XmlReader)
使用生成的类将每个标记序列化为对象
将结果对象反序列化为json并保存到
考虑分批保存1000-2000个标签
你对序列化/反序列化很慢是正确的。仍然在几个线程中工作,最好使用TPL将为您提供良好的速度。另外考虑使用json.net序列化程序,它实际上比标准程序快很多(虽然它是web.api的标准)
如果您需要,我可以在早上放一些代码片段。 我们正在以这种方式处理大(1-10gig)文件,以便将数据保存到sql server数据库。