我想使用C#将XML文件转换为CSV文件。
<?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>
上面的XML是我的文件结构的一个示例,实际文件实际上要大得多。我有多个XML文件,字段名称随每个XML文件而变化。因此,我需要自动获取字段名称及其值,并将其全部存储到CSV文件中。任何帮助都会受到赞赏,因为我不熟悉CSV。
答案 0 :(得分:0)
这可以帮助您将xml格式转换为csv格式,但您需要从here下载csv阅读器
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();
}
答案 1 :(得分:0)
Cinchoo ETL - 一个开源库简化了将任何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());
输出CSV:
field,something,name
2,0,alex
0,0,jack
2,1,heath
0,0,blake
Checkout CodeProject文章提供了一些额外的帮助。
免责声明:我是这个图书馆的作者。