

新闻资讯
技术学院C#中从XML读取数据填充ListView需先设置View=View.Details并添加对应列,再用XDocument或XmlReader解析XML,提取字段创建ListViewItem添加到Items集合,注意空值处理、编码和大文件性能优化。
在C#中从XML读取数据并填充ListView,核心是解析XML(推荐使用XDocument或XmlReader),提取所需字段,再逐项添加到ListView的Items集合中。注意ListView需提前设置View = View.Details并定义Columns,否则无法正确显示多列数据。
确保ListView支持详细视图和列头,否则只显示图标或大图标模式,无法呈现表格化数据:
listView1.View = View.Details;
listView1.Columns.Add("ID", 80); listView1.Columns.Add("Name", 120); listView1.Columns.Add("Age", 60);
listView1.Items.Clear();
XDocument语法简洁,适合结构清晰、内存允许的中小型XML文件。假设XML如下:
对应C#代码:
XDocument doc = XDocument.Load("data.xml"); 或 XDocument.Parse(xmlString);
var persons = doc.Root?.Elements("Person");
foreach (var p in persons) { string id = p.Attribute("ID")?.Value ?? ""; string name = p.Element("Name")?.Value ?? ""; string age = p.El
ement("Age")?.Value ?? ""; ListViewItem item = new ListViewItem(id); item.SubItems.Add(name); item.SubItems.Add(age); listView1.Items.Add(item); }
实际开发中容易遇到几个典型问题:
?.空条件操作符和?? ""提供默认值,避免NullReferenceExceptionnew XmlReaderSettings { Encoding = Encoding.UTF8 }配合XmlReader.Create()
XmlReader流式读取,避免一次性加载全部到内存int.TryParse(age, out int result)而非直接int.Parse
当XML体积较大时,XmlReader更节省内存:
using var reader = XmlReader.Create("data.xml");
while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "Person") { string id = reader.GetAttribute("ID") ?? ""; reader.ReadToFollowing("Name"); string name = reader.ReadElementContentAsString(); reader.ReadToFollowing("Age"); string age = reader.ReadElementContentAsString(); /* 构造item并添加 */ } }