当前位置: 首页 > news >正文

c# 读取xml到datagridview

<?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;
}

http://www.dtcms.com/a/403100.html

相关文章:

  • 开源的 CSS 动画库
  • (三)过滤器及组件化开发
  • [NewBeeBox] A JavaScript error occurred in the main process
  • 【LangGraph】ReAct构建-LangGraph简单实现
  • 做毕业设计哪个网站好网站怎样做百度推广
  • Python高效合并Excel多Sheet工作表,告别繁琐手动操作
  • 自动跳转到wap网站外贸网站建设制作设计案例
  • 【Linux】 服务器无 sz 命令时的文件传输和日志查看方案
  • 【TVM 教程】设置 RPC 系统
  • 在ssh远程连接的autodl服务器(中国无root权限服务器)上使用copilt的Claude模型
  • Ansible 自动化运维:集中化管理服务器实战指南
  • 自动化运维工具 Ansible 集中化管理服务器
  • 【好玩的开源项目】使用Docker部署LMS轻量级音乐服务器
  • Netty从0到1系列之RPC通信
  • Coze源码分析-资源库-创建数据库-后端源码-安全与错误处理
  • LeetCode:52.腐烂的橘子
  • LeetCode算法日记 - Day 52: 求根节点到叶节点数字之和、二叉树剪枝
  • 四种方法解决——力扣189.轮转数组
  • ⸢ 伍-Ⅱ⸥ ⤳ 默认安全治理实践:水平越权检测 前端安全防控
  • 力扣856
  • Leetcode94.二叉数的中序遍历练习
  • 多种解法全解析——力扣217. 存在重复元素
  • 用python做的网站多吗二手书交易网站策划书
  • phpcms网站源码ui培训班多少钱
  • Android Studio 导入 opencv
  • 在线网站做成appdede网站地图样式修改
  • 全新尚界H5凭借HUAWEI XMC数字底盘引擎技术,让湿滑路面也“稳”操胜券
  • iOS 26 性能测试实战,如何评估启动速度、CPUGPU 负载、帧率与系统资源适配(uni-app 与 iOS 原生应用性能方案)
  • 腾讯会议→微课操作
  • html原生表格,实现左侧列固定