[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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д