C# 在使用concat之后,如何在统一列中列出XML元素?
我正在将XML转换为CSV,我希望转换后的记录在特定标题下的统一列中显示 我尝试使用以下代码将XML元素压缩为字符串:C# 在使用concat之后,如何在统一列中列出XML元素?,c#,xml,linq,csv,xmltocsv,C#,Xml,Linq,Csv,Xmltocsv,我正在将XML转换为CSV,我希望转换后的记录在特定标题下的统一列中显示 我尝试使用以下代码将XML元素压缩为字符串: string[] valuesToPrint = { "oper_type", "msg_type", "oper_date","host_date","amount_value", "currency"}; //string[] newValues = {}; XNamespace ns = "http://in/SVXP/Settlemen
string[] valuesToPrint = { "oper_type", "msg_type", "oper_date","host_date","amount_value", "currency"};
//string[] newValues = {};
XNamespace ns = "http://in/SVXP/Settlement";
File.WriteAllLines(@"C:\Users\test.csv",
new[] { string.Join(",", valuesToPrint) }
.Concat(XDocument.Load(filename)
.Descendants(ns + "operation")
.Select(e =>
{
return string.Join(",", e.Attributes()
.Where(a => valuesToPrint.Contains(a.Name.LocalName))
.Select(a => a.Value.Replace(",", ""))
.Concat(e.Elements()
.Where(c => valuesToPrint.Contains(c.Name.LocalName))
.Select(c => c.Value.Replace(",", ""))).ToArray());
}))
.Concat(XDocument.Load(filename)
.Descendants(ns + "oper_amount")
.Select(e =>
{
return string.Join(",", e.Attributes()
.Where(a => valuesToPrint.Contains(a.Name.LocalName))
.Select(a => a.Value)
.Concat(e.Elements()
.Where(c => valuesToPrint.Contains(c.Name.LocalName))
.Select(c => c.Value)).ToArray());
}))
);
我预计输出如下:
OPTP0001 MSGTAUTH 21/07/2019 21/07/2019 12250 598
然而,它似乎是:
OPTP0001 MSGTAUTH 21/07/2019 21/07/2019 ............................................12250 598
若您也可以共享xml,并尝试使用Trim()删除字符串开头和结尾的空格,这将非常有用。