[XML] Вывод результатов поиска. Подскажите ошибку - C#
Формулировка задачи:
Искать можно по тексту и по типу (входящие-исходящие-все).
Проблема в том, что вместо такого результата:
Получается уж слишком дофига стрелок:
Структура XML-файла:
P.S. Стрелки показывают, было ли сообщение отправлено, или, напротив, получено.
{ txtHistory.Clear(); listView1.Clear(); string patch = @"C:/History/ExampleHistory.xml"; XElement history; try { history = XElement.Load(patch); } catch(FileNotFoundException ex) { MessageBox.Show(ex.Message, "Error!"); this.Close(); return; } XElement[] elements = history.Elements("Message").ToArray(); switch (cmbTypeOfSearch.SelectedIndex) { case 0: { var filtred = from el in elements where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower()) select el; foreach (var el in filtred) { foreach (XElement msg in el.Elements()) { string res = string.Format("{0}", msg.Value); txtHistory.AppendText(res + Environment.NewLine); listView1.Items.Add(res); } } break; } case 1: { var filtredbytype = from el in elements where el.Attribute("msgType").Value == "from" select el; var filtred = from el in filtredbytype where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower()) select el; foreach (var el in filtred) { foreach (XElement msg in el.Elements()) { string res = string.Format("<- {0}", msg.Value); txtHistory.AppendText(res + Environment.NewLine); listView1.Items.Add(res); } } break; } case 2: { var filtredbytype = from el in elements where el.Attribute("msgType").Value == "to" select el; var filtred = from el in filtredbytype where el.Element("message").Value.ToLower().Contains(txtSearch.Text.ToLower()) select el; foreach (var el in filtred) { foreach (XElement msg in el.Elements()) { string res = string.Format("-> {0}", msg.Value); txtHistory.AppendText(res + Environment.NewLine); listView1.Items.Add(res); } } break; } } }
-> Example
17.05.2015 6:42:14
TEST REST PEACE
-> Example
-> 17.05.2015 6:42:14
-> TEST REST PEACE
<?xml version="1.0" encoding="utf-8"?> <Messages> <Message msgType="to"> <usrSecond>Example</usrSecond> <date>17.05.2015 5:42:14</date> <message>test message</message> </Message> <Message msgType="to"> <usrSecond>Example</usrSecond> <date>17.05.2015 6:42:14</date> <message>TEST REST PEACE</message> </Message> </Messages>
Решение задачи: «[XML] Вывод результатов поиска. Подскажите ошибку»
textual
Листинг программы
foreach (var el in filtred) { bool first = true; foreach (XElement msg in el.Elements()) { string res = msg.Value; if (first) { res = string.Format("-> {0}", msg.Value); first = false; } txtHistory.AppendText(res + Environment.NewLine); listView1.Items.Add(res); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д