Чтение из xml, запись в csv - C#
Формулировка задачи:
Здравствуйте, товарищи, помогите разобраться с несколькими проблемами.
Нужно написать программку, вытаскивающую нужную инфу из xml файлика + запись результатов в csv файл. Собственно программку то я кое как написал, но столкнулся с некоторыми проблемами:
1) Не хочет читать русские символы из xml файла (гуглил, но видимо руки кривые, не нашел), вылетает с ошибкой на первом же русском символе
2) При записи в csv файл через каждое слово идет пустая строка, не пойму как убрать
3) Надоумте как сделать так чтобы при записи в файл citiesFrom писалось в первый столбец, citiesWhere во второй, и т.д. (находил инфу что надо добавить разделители вида \t , но не помогло)
Прилагаю тестовый xml файлик на всякий случай, тут без русских символов , но в том файле что должна читать программа они есть.
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; } } }
<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"
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д