Как отобразить данные из файла XML в ListView, используя LINQ to XML? - PullRequest
1 голос
/ 28 сентября 2010

У меня есть XML-файл, например

<Root>
 <Child val1="1" val2="2"/>
 <Child val1="1" val2="3"/>
 <Child val1="2" val2="4"/>
</Root>

Мне нужно отобразить данные из XML-файла в ListView, например

alt text

(A добавлено к значению индекса)

Теперь я использую как

1. Сохраняет данные в XmlNodesList

2. Затем выполняется итерация по nodeslist и добавьте значение атрибута в представление списка

Здесь я не могу использовать Dictionary<String,String> в качестве временного хранилища, поскольку существует несколько ключей с одинаковым именем.

Есть ли идея сделать этоиспользуя LINQ to XML.?

1 Ответ

1 голос
/ 28 сентября 2010

Без LINQ:

var doc = new System.Xml.XmlDocument();
doc.LoadXml(xml);

var nodes = doc.SelectNodes("Root/Child");

for (int i = 0; i < nodes.Count; i++)
{
    var n = nodes[i];
    var index = String.Format("A{0}", i + 1);
    var column1 = n.Attributes["val1"].Value;
    var column2 = n.Attributes["val1"].Value;

    // use variables to add an item to ListView
}

Использование LINQ:

using System.Linq;

var doc = new System.Xml.XmlDocument();
doc.LoadXml(xml);

var nodes = doc.SelectNodes("Root/Child");
var arr = nodes
    .OfType<XmlNode>()
    .ToArray();

var result = arr
    .Select(n =>
        new
        {
            ClNo = String.Format("A{0}", Array.IndexOf(arr, n) +1),
            Val1 = n.Attributes["val1"].Value,
            Val2 = n.Attributes["val2"].Value,
        });

ListView list = new ListView();
ListViewItem[] items = result
    .Select(r => new ListViewItem(new[] { r.ClNo, r.Val1, r.Val2 })
    .ToArray();
list.Items.AddRange(items);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...