在C# Windows窗体应用开发中,将XML文件中的结构化数据读取并展示到ListView控件是常见需求,这种实现方式适合处理配置信息、本地存储的业务数据等场景,下面详细介绍完整的实现过程。

准备XML测试文件
首先需要准备一个结构清晰的XML文件作为数据源,这里我们创建一个存储学生信息的XML文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Students>
<Student>
<Id>1001</Id>
<Name>张三</Name>
<Age>20</Age>
<Class>计算机1班</Class>
</Student>
<Student>
<Id>1002</Id>
<Name>李四</Name>
<Age>21</Age>
<Class>计算机2班</Class>
</Student>
<Student>
<Id>1003</Id>
<Name>王五</Name>
<Age>19</Age>
<Class>计算机1班</Class>
</Student>
</Students>
将上述内容保存为StudentInfo.xml,放到程序运行目录下即可。
解析XML数据的核心步骤
我们使用XmlDocument类来完成XML文件的加载和节点解析,具体步骤如下:
- 创建
XmlDocument实例并加载目标XML文件 - 获取根节点下的所有
Student子节点 - 遍历每个
Student节点,提取内部的Id、Name、Age、Class子节点的文本内容
配置ListView控件
在窗体上拖入一个ListView控件,需要先设置其属性和列信息,也可以通过代码动态配置:
// 设置ListView显示方式为详细信息模式
listView1.View = View.Details;
// 允许显示网格线
listView1.GridLines = true;
// 添加列头
listView1.Columns.Add("学生ID", 80, HorizontalAlignment.Left);
listView1.Columns.Add("姓名", 100, HorizontalAlignment.Left);
listView1.Columns.Add("年龄", 60, HorizontalAlignment.Left);
listView1.Columns.Add("班级", 120, HorizontalAlignment.Left);
完整实现代码
下面是读取XML并填充ListView的完整方法,可以直接绑定到按钮的点击事件中:
using System.Xml;
private void LoadXmlToListView()
{
// 清空ListView原有数据
listView1.Items.Clear();
// 创建XmlDocument实例
XmlDocument xmlDoc = new XmlDocument();
try
{
// 加载XML文件,路径根据实际存放位置调整
xmlDoc.Load("StudentInfo.xml");
// 获取根节点Students
XmlNode rootNode = xmlDoc.SelectSingleNode("Students");
if (rootNode != null)
{
// 遍历所有Student子节点
foreach (XmlNode studentNode in rootNode.ChildNodes)
{
// 提取各个子节点的文本
string id = studentNode.SelectSingleNode("Id")?.InnerText ?? "";
string name = studentNode.SelectSingleNode("Name")?.InnerText ?? "";
string age = studentNode.SelectSingleNode("Age")?.InnerText ?? "";
string className = studentNode.SelectSingleNode("Class")?.InnerText ?? "";
// 创建ListView项,第一列是项的文本
ListViewItem item = new ListViewItem(id);
// 添加后续列的子项
item.SubItems.Add(name);
item.SubItems.Add(age);
item.SubItems.Add(className);
// 将项添加到ListView
listView1.Items.Add(item);
}
}
}
catch (Exception ex)
{
MessageBox.Show("读取XML文件失败:" + ex.Message);
}
}
注意事项
- XML文件路径需要正确,如果放在程序运行目录外,需要填写完整绝对路径或者相对路径
- 使用
SelectSingleNode方法获取节点时,最好做空值判断,避免XML节点缺失导致程序报错 - 如果XML文件编码不是UTF-8,需要在加载时指定对应的编码格式,避免中文出现乱码
- 大量数据填充时,可以先调用
listView1.BeginUpdate(),填充完成后调用listView1.EndUpdate(),提升界面刷新效率
C#XMLListViewXmlDocument修改时间:2026-06-10 12:39:29