Чтение из xml, запись в csv - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, товарищи, помогите разобраться с несколькими проблемами. Нужно написать программку, вытаскивающую нужную инфу из xml файлика + запись результатов в csv файл. Собственно программку то я кое как написал, но столкнулся с некоторыми проблемами: 1) Не хочет читать русские символы из xml файла (гуглил, но видимо руки кривые, не нашел), вылетает с ошибкой на первом же русском символе 2) При записи в csv файл через каждое слово идет пустая строка, не пойму как убрать 3) Надоумте как сделать так чтобы при записи в файл citiesFrom писалось в первый столбец, citiesWhere во второй, и т.д. (находил инфу что надо добавить разделители вида \t , но не помогло)
private void button1_Click(object sender, EventArgs e)
        {      
            List<String> citiesFrom = new List<String>();
            List<String> citiesWhere = new List<String>();
            List<String> cost = new List<String>();
            XmlTextReader reader = new XmlTextReader("c://filename.xml");
            citiesFrom.Clear();
            citiesWhere.Clear();
            cost.Clear();
            using (StreamWriter file = new StreamWriter("Report.csv", false, Encoding.GetEncoding(1251)))
            {
                while (reader.Read())
                {
                    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "From"))
                    {
                        reader.Read();
                        citiesFrom.Add(reader.Value);
                    }
 
                    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "Where"))
                    {
                        reader.Read();
                        citiesWhere.Add(reader.Value);
                    }
 
                    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "Cost"))
                    {
                        reader.Read();
                        cost.Add(reader.Value);
                    }
 
                }
         
                for (int i = 0; i < citiesFrom.Count; i++)
                {
                    file.Write(citiesFrom[i] + ';');      
                }
                for (int i = 0; i < citiesWhere.Count; i++)
                {
                    file.Write(citiesWhere[i] + ';');
                }
                for (int i = 0; i < cost.Count; i++)
                {
                    file.Write(cost[i] + ';');
                }
            }
            listBox1.DataSource = citiesFrom;
            listBox2.DataSource = citiesWhere;
            listBox3.DataSource = cost;
        }
    }
}
Прилагаю тестовый xml файлик на всякий случай, тут без русских символов , но в том файле что должна читать программа они есть.
<Ticket>
<From>
Moscow
</From>
<Where>
Berlin
</Where>
<mustnotbeshown>
LoL
</mustnotbeshown>
<mustnotbeshown1>
LoL
</mustnotbeshown1>
<mustnotbeshown1>
LoL
</mustnotbeshown1>
<mustnotbeshown1>
LoL
</mustnotbeshown1>
<mustnotbeshown1>
LoL
</mustnotbeshown1>
<mustnotbeshown1>
LoL
</mustnotbeshown1>
<mustnotbeshown2>
LoL
</mustnotbeshown2>
<Cost>
8000
</Cost>
<From>
New York
</From>
<Where>
Tokio
</Where>
<mustnotbeshown>
LoL
</mustnotbeshown>
<Cost>
9500
</Cost>
<From>
Washington
</From>
<Where>
St.Petersburg
</Where>
<Cost>
11000
</Cost>
<From>
Paris
</From>
<Where>
London
</Where>
<Cost>
4000
</Cost>
</Ticket>

Решение задачи: «Чтение из xml, запись в csv»

textual
Листинг программы
string csv = "1;2;3;\"text with ; separator\";4"

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5