读取XML文件并生成DataTable

本文介绍如何从XML文件中解析数据,并将其显示到指定的数据显示控件中。通过加载XML文件,提取时间与内容信息,实现数据的高效管理和可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XML格式如下:

<?xml version="1.0" encoding="gb2312"?>
<indexs>
  <index>
    <time>00:00:04:839</time>
    <content>内容</content>
  </index>
  <index>
    <time>00:00:12:707</time>
    <content>内容</content>
  </index>

</indexs>

代码如下:

View Code
 1         /// <summary>
 2         /// 从XML文件获取数据
 3         /// </summary>
 4         /// <param name="dataGridView">数据显示控件</param>
 5         /// <param name="fileName">文件名</param>
 6         /// <param name="filePath">路径</param>
 7         public void LoadIndexInfo(DataGridView dataGridView, string fileName, string filePath)
 8         {
 9             //获取xml文件名
10             string xmlName = filePath.Substring(0, filePath.LastIndexOf('\\')) + "\\" + fileName.Substring(0, fileName.LastIndexOf('.')) + ".xml";
11 
12             try
13             {
14                 //节点标题
15                 string[] header = { "时间", "内容" };
16                 XmlDocument xmlDoc = new XmlDocument();
17                 xmlDoc.Load(xmlName);
18                 //根节点
19                 XmlElement root = xmlDoc.DocumentElement;
20                 //index元素节点
21                 XmlElement index = (XmlElement)root.SelectSingleNode("index");
22 
23                 if (index == null)
24                 {
25                     while (dataGridView.Rows.Count > 0)
26                     {
27                         dataGridView.Rows.RemoveAt(0);
28                     }
29                 }
30 
31                 //index节点下的节点列表
32                 XmlNodeList nodeList = index.ChildNodes;
33                 //设置头部
34                 DataTable dt = new DataTable();
35 
36                 //获取列名
37                 for (int i = 0; i < header.Length; i++)
38                 {
39                     DataColumn dc = new DataColumn(header[i]);
40                     dt.Columns.Add(dc);
41                 }
42                 XmlNodeList indexs = root.GetElementsByTagName("index");
43                 for (int k = 0; k < indexs.Count; k++)
44                 {
45                     DataRow dr = dt.NewRow();
46                     for (int i = 0; i < nodeList.Count; i++)
47                     {
48                         dr[i] = indexs[k].ChildNodes[i].InnerText;
49                     }
50                     dt.Rows.Add(dr);
51                 }
52                 dt.DefaultView.Sort = dt.Columns["时间"] + " ASC";
53             }
54             catch(Exception e)
55             {
56                 throw e;
57             }
58         }

 

转载于:https://www.cnblogs.com/shuyajun/archive/2012/07/12/2588314.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值