C# 使用C语言将XML文件转换为CSV#
我想使用C#将XML文件转换为CSV文件C# 使用C语言将XML文件转换为CSV#,c#,xml,csv,C#,Xml,Csv,我想使用C#将XML文件转换为CSV文件 2. 0 亚历克斯 0 0 杰克 2. 1. 荒地 0 0 布莱克 上面的XML是我的文件的结构示例,实际文件实际上要大得多。我有多个XML文件,每个XML文件的字段名都会改变。因此,我需要自动获取字段名及其值,并将其全部存储到CSV文件中。任何帮助都将不胜感激,因为我不熟悉CSV。这将帮助您将xml转换为CSV格式,但您需要从下载CSV阅读器 -一个开源库简化了将任何Xml文件转换为CSV文件的过程,只需很少的设置 使用下面的代码可以生成Xml s
2.
0
亚历克斯
0
0
杰克
2.
1.
荒地
0
0
布莱克
上面的XML是我的文件的结构示例,实际文件实际上要大得多。我有多个XML文件,每个XML文件的字段名都会改变。因此,我需要自动获取字段名及其值,并将其全部存储到CSV文件中。任何帮助都将不胜感激,因为我不熟悉CSV。这将帮助您将xml转换为CSV格式,但您需要从下载CSV阅读器 -一个开源库简化了将任何Xml文件转换为CSV文件的过程,只需很少的设置 使用下面的代码可以生成Xml
string xml = @"<?xml version=""1.0""?>
<results>
<results>
<field>2</field>
<something>0</something>
<name>alex</name>
</results>
<results>
<field>0</field>
<something>0</something>
<name>jack</name>
</results>
<results>
<field>2</field>
<something>1</something>
<name>heath</name>
</results>
<results>
<field>0</field>
<something>0</something>
<name>blake</name>
</results>
</results>";
StringBuilder sb = new StringBuilder();
using (var p = ChoXmlReader.LoadText(xml))
{
using (var w = new ChoCSVWriter(sb)
.WithFirstLineHeader()
)
w.Write(p);
}
Console.WriteLine(sb.ToString());
签出CodeProject文章以获取更多帮助
免责声明:我是此库的作者。我投票将此问题作为主题外的问题结束,因为OP没有显示解决此问题的重大努力。此问题太广泛。首先做一些研究,如果你有一个特定的编码问题,再来看看。关于CSV,没有什么需要“熟悉”的。每行文本有一条记录,字段之间用逗号分隔(根据数据,用双引号括起来)。学习一点XSLT,您很快就会有一个有效的解决方案。搜索序列化/反序列化您可以为此使用
LINQToXML
。搜索一个例子。
using (CsvWriter writer = new CsvWriter("users.csv"))
using (XmlRecordReader reader = new XmlRecordReader("users.xml", "users/user"))
{
reader.Columns.Add("field", "field");
reader.Columns.Add("something", "something");
reader.Columns.Add("name", "name");
writer.Write("field");
writer.Write("something");
writer.Write("name");
writer.EndRecord();
while (reader.ReadRecord())
{
writer.Write(reader["field"]);
writer.Write(reader["something"]);
writer.Write(reader["name"]);
writer.EndRecord();
}
reader.Close();
writer.Close();
}
string xml = @"<?xml version=""1.0""?>
<results>
<results>
<field>2</field>
<something>0</something>
<name>alex</name>
</results>
<results>
<field>0</field>
<something>0</something>
<name>jack</name>
</results>
<results>
<field>2</field>
<something>1</something>
<name>heath</name>
</results>
<results>
<field>0</field>
<something>0</something>
<name>blake</name>
</results>
</results>";
StringBuilder sb = new StringBuilder();
using (var p = ChoXmlReader.LoadText(xml))
{
using (var w = new ChoCSVWriter(sb)
.WithFirstLineHeader()
)
w.Write(p);
}
Console.WriteLine(sb.ToString());
field,something,name
2,0,alex
0,0,jack
2,1,heath
0,0,blake