【问题标题】:How to display data from XML file to ListView using LINQ to XML?如何使用 LINQ to XML 将 XML 文件中的数据显示到 ListView?
【发布时间】:2010-09-28 11:34:48
【问题描述】:

我有一个类似的 xml 文件

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

我需要将 Xml 文件中的数据显示到类似的 Listview 中

(将A添加到索引值)

现在我正在使用喜欢

1.将数据存储在XmlNodesList

2.然后遍历nodeslist并将属性值添加到列表视图中

这里我不能使用Dictionary&lt;String,String&gt;作为临时存储,因为存在多个同名键。

有没有什么想法可以使用LINQ to XML.?

【问题讨论】:

  • @ abatishchev : 是的...已编辑标题 :-)
  • 最好使用标签而不是标题 ;)
  • 顺便说一句,A1,A2,A3 来自哪里?
  • @ abatishchev : `1,2,3` 是索引值(for loop ("A"+(Index+1).ToString())

标签: c# xml winforms linq lambda


【解决方案1】:

没有 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);

【讨论】:

  • @abatishchev : Populate() - 我不明白这个
  • 我的意思是 Populate() 从您的 XML 文件中返回 XmlNodeList 数据,例如doc.SelectNodes("root/child");
  • @abatishchev:谢谢,但它会抛出类似Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access. 的错误,我使用的是 .NET 3.5 框架
  • @ abatishchev :不,它也抛出了同样的错误。我认为我们不能将 ListView 属性(ColumnName)用作匿名类型变量
  • @Pramodh:什么错误和什么字符串?该代码对我来说很好用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多