<?xml version="1.0" encoding="utf-8"?>
<Employees>
  <Employee>
    <ID>101</ID>
    <Name>张三</Name>
    <Age>30</Age>
    <Department>技术部</Department>
    <Salary>15000</Salary>
  </Employee>
  <Employee>
    <ID>102</ID>
    <Name>李四</Name>
    <Age>28</Age>
    <Department>市场部</Department>
    <Salary>12000</Salary>
  </Employee>
  <Employee>
    <ID>103</ID>
    <Name>王五</Name>
    <Age>35</Age>
    <Department>财务部</Department>
    <Salary>18000</Salary>
  </Employee>
</Employees>

 

using System;
using System.Data;
using System.Windows.Forms;
using System.Xml;

private void LoadXmlWithXmlDocument(string filePath)
{
    try
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(filePath);

        // 创建DataTable
        DataTable dataTable = new DataTable("Employees");
        
        // 添加列
        dataTable.Columns.Add("ID", typeof(int));
        dataTable.Columns.Add("姓名", typeof(string));
        dataTable.Columns.Add("年龄", typeof(int));
        dataTable.Columns.Add("部门", typeof(string));
        dataTable.Columns.Add("薪资", typeof(decimal));

        // 获取所有Employee节点
        XmlNodeList employeeNodes = xmlDoc.SelectNodes("//Employee");
        
        if (employeeNodes != null && employeeNodes.Count > 0)
        {
            foreach (XmlNode employeeNode in employeeNodes)
            {
                DataRow row = dataTable.NewRow();
                
                // 读取节点数据
                row["ID"] = GetNodeValue(employeeNode, "ID", 0);
                row["姓名"] = GetNodeValue(employeeNode, "Name", "");
                row["年龄"] = GetNodeValue(employeeNode, "Age", 0);
                row["部门"] = GetNodeValue(employeeNode, "Department", "");
                row["薪资"] = GetNodeValue(employeeNode, "Salary", 0m);
                
                dataTable.Rows.Add(row);
            }
            
            dataGridView.DataSource = dataTable;
            lblStatus.Text = $"成功加载 {employeeNodes.Count} 条记录";
        }
        else
        {
            lblStatus.Text = "未找到Employee数据";
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"解析XML时出错:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

// 辅助方法:安全获取节点值
private T GetNodeValue<T>(XmlNode parentNode, string nodeName, T defaultValue)
{
    try
    {
        XmlNode node = parentNode.SelectSingleNode(nodeName);
        if (node != null && !string.IsNullOrEmpty(node.InnerText))
        {
            return (T)Convert.ChangeType(node.InnerText, typeof(T));
        }
    }
    catch
    {
        // 转换失败时返回默认值
    }
    return defaultValue;
}

更多推荐