LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 自定义创建XML格式文件方法

admin
2025年7月20日 19:29 本文热度 58

     XML(eXtensible Markup Language,可扩展标记语言)是一种通用的标记语言,主要用于存储和传输结构化数据。它的设计目标是兼具可读性和机器可处理性,广泛应用于如下场景:

  • 数据存储与交换:不同应用程序之间数据交换。

  • Web服务与API通信:Web服务的标准数据格式,用于网络传输结构化信息。

  • 系统配置参数文件:使用XML定义配置参数,因其层次结构清晰且易于解析。

  • 文档标记:XML可用于标记文档内容,支持自定义标签描述语义。

  • 数据库与数据序列化:XML可作为数据库导出格式或对象序列化格式。

  • 跨平台兼容性:XML与编程语言无关,几乎所有语言(Java、Python、C#等)都提供XML解析库(如DOM、SAX)。

大疆无人机二次开发教程:基于Mobile SDK与UX SDK

航拍无人机四轴飞行器遥控器飞机新手练习机-单摄-1电池

1、创建XML格式文件

(1)准备一个数据表:

//XML文件保存路径string XMLFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "XMLTest.xml");
//创建数据表     DataTable dt = new DataTable();dt.Columns.Add("Id");dt.Columns.Add("Name");dt.Columns.Add("Code");dt.Columns.Add("YuWen");dt.Columns.Add("ShuXue");dt.Columns.Add("YingYu");dt.Columns.Add("TiYu");
for (int i = 0; i < 10; i++){    DataRow dr = dt.NewRow();    dr["Id"] = i;    dr["Name"] = "Name" + i.ToString();    dr["Code"] = "Code" + i.ToString();    dr["YuWen"] = 100 + i;    dr["ShuXue"] = 200 + i;    dr["YingYu"] = 300 + i;    dr["TiYu"] = 400 + i;    dt.Rows.Add(dr);}

(2)将数据表转换为A格式:

//XML文件 A格式(请参考后面的帮助类)bool RetState = XmlFileHelper.Handle.DataTableToXMLA(dt, XMLFilePath);

(3)将数据表转换为B格式:

//XML文件 B格式RetState = XmlFileHelper.Handle.DataTableToXMLB(dt, XMLFilePath);

(4)XML格式转换帮助类:

public class XmlFileHelper{    private static XmlFileHelper handle = null;    public static XmlFileHelper Handle    {        get        {            if (handle == null)            {                handle = new XmlFileHelper();            }            return handle;        }    }
    #region 内置函数,通用DataTable与XML文件相互转换       
    #region DataTable转换为XML文件 格式A    /// <summary>    /// DataTable转换为XML文件 格式A    /// </summary>    /// <param name="data">数据列表</param>    /// <param name="SaveXMLFilePath">XML文件保存路径</param>    /// <returns></returns>    public bool DataTableToXMLA(DataTable data, string SaveXMLFilePath)    {        bool RetState = false;        DataSet ds = new DataSet();        ds.Tables.Add(data.Copy());
        try        {            using (MemoryStream stream = new MemoryStream())            {                using (XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8))                {                    ds.WriteXml(writer, XmlWriteMode.WriteSchema);                    int nCount = (int)stream.Length;                    byte[] arr = new byte[nCount];                    stream.Seek(0, SeekOrigin.Begin);                    stream.Read(arr, 0, nCount);                    UTF8Encoding utf = new UTF8Encoding();                    string strContent = utf.GetString(arr).Trim();                    using (StreamWriter sw = new StreamWriter(SaveXMLFilePath))                    {                        string NewStr = strContent;                        NewStr = NewStr.Replace("><xs"">\r\n<xs").Replace("></xs"">\r\n</xs").Replace("schema><Table1""schema>\r\n<Table1").Replace("Table1><Table1""Table1>\r\n<Table1").Replace("></NewDataSet"">\r\n</NewDataSet");                        sw.WriteLine(NewStr);                        sw.Close();                        writer.Close();                    }                }            }            RetState = true;        }        catch (System.Exception ex)        {            RetState = false;            throw new Exception(ex.Message);        }        return RetState;    }    #endregion
    #region DataTable转换为XML文件 格式B           /// <summary>    /// DataTable转换为XML文件 格式B    /// </summary>    /// <param name="dt">数据列表</param>    /// <param name="xmlFilePath">XML文件保存路径</param>    /// <returns></returns>    public bool DataTableToXMLB(DataTable dt, string xmlFilePath)    {        bool RetState = false;        try        {            XElement xAld = new XElement("DataTable"new XAttribute("Count", dt.Rows.Count));            for (int i = 0; i < dt.Rows.Count; i++)            {                XElement xProduct = new XElement("Row"new XAttribute("Index", (i + 1).ToString()));
                for (int j = 0; j < dt.Columns.Count; j++)                {                    xProduct.Add(new XElement(dt.Columns[j].ColumnName, dt.Rows[i][j].ToString()));                }                xAld.Add(xProduct);            }
            xAld.Save(xmlFilePath);        }        catch (Exception)        {            RetState = false;        }        return RetState;    }    #endregion
    #region XML文件转换为DataTable    /// <summary>    /// XML文件转换为DataTable    /// </summary>    /// <param name="XMLFilePath"></param>    /// <returns></returns>    public DataTable XMLToDataTable(string XMLFilePath)    {        DataTable ReData = new DataTable();        DataSet ds = new DataSet();        try        {            if (!File.Exists(XMLFilePath)) return new DataTable();
            using (StreamReader sr = new StreamReader(XMLFilePath))            {                string strXmlContent = sr.ReadToEnd();                using (StringReader stream = new StringReader(strXmlContent))                {                    using (XmlTextReader reader = new XmlTextReader(stream))                    {                        ds.ReadXml(reader);                        reader.Close();                        stream.Close();                        sr.Close();                    }                }            }            if (ds.Tables.Count > 1)                ReData = ds.Tables[1];            else                ReData = ds.Tables[0];        }        catch (System.Exception vErr)        {            ReData = new DataTable();            throw new Exception(vErr.Message);        }        return ReData;    }    #endregion
    #endregion  }

新款S119无人机GPS定位返航带屏高级航拍四轴飞行器8k长续航

青少年160Pro-多功能编程无人机C类科教馆竞赛教具用无人机飞行器

BC230竞赛编程无人机青少年教学编程无人机C类科教馆竞赛类教具1

无人机编程入门

2、创建自定义XML格式文件
(1)自定义格式(主表与子表嵌套格式),内容列属性描述根据需求调整;
/// <summary>/// 用户自定义XML文件模板 (主表->子表格式) /// 根据需求按如下模板套用,且适用于多层节点嵌套情况;/// </summary>/// <param name="xmlFilePath"></param>private static void CreateUserXmlFile(string xmlFilePath){
    XElement xAld = new XElement("大标题"new XAttribute("version""1.0"));
    //主表    XElement xProduct = new XElement("主表标题"new XAttribute("主表标识名称""主表标识名称值"),                    new XElement("列名1""值1"),                    new XElement("列名2""值2"),                    new XElement("子表行数""10"),                    //... ...                    new XElement("列名N""值N")                    );    xAld.Add(xProduct);
    //子表    for (int i = 0; i < 10; i++)    {        XElement xVersion = new XElement("子表标题"new XAttribute("Index", (i + 1).ToString()),                     new XElement("列名1""值1"),                     new XElement("列名2""值2"),                     //... ...                     new XElement("列名N""值N")                    );        xAld.Add(xVersion);    }
    //保存XML格式文件    xAld.Save(xmlFilePath);}
(2)自动定义格式遍历方法:
//读取遍历Xml文件XElement xe = XElement.Load(xmlFilePath);var Product = (from ele in xe.Elements("主表标题"select ele).SingleOrDefault();if (xProduct != null){    int Count = int.Parse(xProduct.Element("子表行数").Value);    for (int i = 1; i <= Count; i++)//明细列表读取方法    {        var xVersion = (from ele in xe.Elements("子表标题"where ele.Attribute("Index").Value.Equals(i.ToString()) select ele).SingleOrDefault();        if (xVersion != null)        {            string v1 = xVersion.Element("列名1").Value.Trim().ToUpper();            string v2 = xVersion.Element("列名2").Value.Trim().ToUpper();            string vN = xVersion.Element("列名N").Value.Trim().ToUpper();        }    }}


阅读原文:原文链接


该文章在 2025/7/21 10:30:02 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved