Как я могу перечислить элементы XML в однородных столбцах после использования concat?

Я конвертирую XML в CSV и хочу, чтобы преобразованные записи отображались в однородных столбцах под определенными заголовками.

Я пробовал использовать следующий код для объединения элементов XML в строки:

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

0 ответов

Другие вопросы по тегам