Files
g.hnyhua.cn/Mtxfw.Utility/XmlClass.cs
2026-02-07 15:48:27 +08:00

112 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Data;
namespace Mtxfw.Utility
{
public class XmlClass
{
//构造函数
public XmlClass()
{
}
public XmlDataDocument Create_doc(string xml_path)
{
//实例化XML操作类
XmlDataDocument doc = new XmlDataDocument();
try
{
//加载XML 文件
doc.Load(xml_path);
}
catch (Exception)
{
throw;
}
return doc;
}
/// <summary>
/// 根据XML文件创建DataTable列的方法
/// </summary>
/// <param name="xml_path"></param>
/// <param name="rootNode"></param>
/// <returns></returns>
public DataTable Table_Create(string xml_path, string rootNode)
{
//实例化XML操作对象类
XmlDataDocument doc = Create_doc(xml_path);
//创建DataTable 类型的变量DT 用来存储读取的XML数据
DataTable dt = new DataTable();
//获取根节点
XmlNode root = doc.SelectSingleNode(rootNode);
//循环创建DT列
foreach (XmlNode node in root.ChildNodes)
{
if (node.Name != "#comment")
{
dt.Columns.Add(node.Attributes["name"].Value, typeof(string));
}
}
return dt;
}
/// <summary>
/// XML读取类
/// </summary>
/// <param name="xml_path">XML文件地址</param>
/// <param name="rootNode">根节点名称</param>
/// <returns></returns>
public DataTable Xml_Reader(string xml_path, string rootNode)
{
//实例化XML操作对象类
XmlDataDocument doc = Create_doc(xml_path);
//创建DataTable 类型的变量DT 用来存储读取的XML数据
DataTable dt = new DataTable();
//获取根节点
XmlNode root = doc.SelectSingleNode(rootNode);
//创建行
DataRow row = dt.NewRow();
//循环添加DT列
foreach (XmlNode node in root.ChildNodes)
{
if (node.Name != "#comment")
{
dt.Columns.Add(node.Attributes["name"].Value, typeof(string));
row[node.Attributes["name"].Value] = node.Attributes["value"].Value;
}
}
dt.Rows.Add(row);
return dt;
}
/// <summary>
/// XML数据更新操作
/// </summary>
/// <param name="xml_path">XML路径</param>
/// <param name="rootNode">XML根节点</param>
/// <param name="dt">数据更新Table</param>
public void Xml_Update(string xml_path, string rootNode, DataTable dt)
{
//实例化XML操作对象类
XmlDataDocument doc = Create_doc(xml_path);
//获取根节点
XmlNode root = doc.SelectSingleNode(rootNode);
//循环更新数据
foreach (XmlNode node in root.ChildNodes)
{
if (node.Name != "#comment")
{
node.Attributes["value"].Value = dt.Rows[0][node.Attributes["name"].Value].ToString();
}
}
//保存更讯
doc.Save(xml_path);
}
}
}