【发布时间】:2017-12-13 18:27:53
【问题描述】:
我有一个复杂的 XML 文件,我想从特定的事务标签中检索值。最后,我需要将这些值保存到 CSV 文件中。
我正在尝试在它所在的每个事务标签中检索下面的值。
<szCustomerID>2988880562567</szCustomerID>
<szCustomerName>130808125028SHM </szCustomerName>
<szExternalID>3177@06/07/17</szExternalID>
注意所有的交易标签都不一样
不幸的是,它正在循环所有事务标签,我得到错误序列不包含元素
有没有一种方法可以让我循环使用后代并总是跳过第二个交易标签,因为我不需要它
try
{
string strSource_voucher = @"C:\\TempFid";
string[] files = Directory.GetFiles(strSource_voucher, "*.xml", SearchOption.AllDirectories);
if (files.Length > 0) // Check if files has values
{
StringBuilder dataToBeWritten = new StringBuilder();
foreach (string file in files)
{
dataToBeWritten.Append("szCustomerID");
dataToBeWritten.Append(",");
dataToBeWritten.Append("szCustomerName");
dataToBeWritten.Append(",");
dataToBeWritten.Append("szExternalID");
dataToBeWritten.Append(",");
dataToBeWritten.Append(Environment.NewLine);
XDocument xDocument = XDocument.Load(file);
int results = xDocument.Descendants("Transaction").Count();
foreach (var trans in xDocument.Descendants("Transaction"))
{
//var trans = xDocument.Descendants("Transaction");
var val1 = (string)trans.Descendants("Set").Elements("szCustomerID").First();
var val2 = (string)trans.Descendants("Set").Elements("szCustomerName").First();
var val3 = (string)trans.Descendants("Set").Elements("szExternalID").First();
dataToBeWritten.Append(val1);
dataToBeWritten.Append(",");
dataToBeWritten.Append(val2);
dataToBeWritten.Append(",");
dataToBeWritten.Append(val3);
dataToBeWritten.Append(",");
dataToBeWritten.Append(Environment.NewLine);
} // End of For each var trans
Console.WriteLine(dataToBeWritten.ToString());
Console.ReadLine();
【问题讨论】:
标签: c# xml csv xml-parsing