返回顶部
首页 > 资讯 > 精选 >C#读写xml文件的方法是什么
  • 279
分享到

C#读写xml文件的方法是什么

2023-07-05 04:07:50 279人浏览 独家记忆
摘要

这篇“C#读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#读写xml文件的方法是什么”文章吧。C

这篇“C#读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#读写xml文件的方法是什么”文章吧。

    C#写入xml文件

    1、XmlDocument

    1。我认为是最原始,最基本的一种:利用XmlDocument向一个XML文件里写节点,然后再利用XmlDocument保存文件。
    首先加载要写入的XML文件,但是如果没有的,就要新建,在新建的过程中,要有写入的代码;

    XmlDocument doc = new XmlDocument();            try            {                doc.Load("new.xml");            }            catch            {                XmlTextWriter xtw = new XmlTextWriter("new.xml", Encoding.UTF8);                //新建XML文件                        xtw.WriteStartDocument();                xtw.WriteStartElement("gnode");                // gnode根节点                                 xtw.WriteStartElement("myxm1");                // gnode根节点下的元素myxmls                             xtw.WriteEndElement();                xtw.WriteEndElement();                xtw.WriteEndDocument();                xtw.Close();                doc.Load("new.xml");            }            XmlNode xn = doc.DocumentElement;            //找到根节点                 XmlElement xe = doc.CreateElement("myxml2");            //在根节点下创建元素,如果是属性,则用XmlAttribute;             xe.InnerText = "薪薪代码hahaha";            //给子节点写入文本节点(值)                 xn.AppendChild(xe);            //根节点将其纳入                     doc.Save("new2.xml");            //利用XmlDocument保存文件        }

    注意点:在新建根节点的时候,WriteStartElement,只能嵌套,也就是只能有一个根节点。

    2、DataSet对象里的值来生成XML文件

    应用到数据库,将数据库的DataSet对象里的值来生成XML文件的元素;

    using (sqlConnection con = new SqlConnection("Server=.;DataBase=HGSTUDY;uid=sa;pwd=yao"))            {                con.Open();                SqlCommand command = new SqlCommand("select * from GL_STUDY", con);                command.CommandType = CommandType.Text;                DataSet ds = new DataSet("DATASET");                //DATASET将成为XML文件中的根节点名称,否则系统将其命名为NewDataSet                      SqlDataAdapter sda = new SqlDataAdapter();                sda.SelectCommand = command;                sda.Fill(ds, "DATATABLE");                //DATATABLE为所生成XML文件中的子节点名称,否则系统将其命名为Table。                   ds.WriteXml("dbxml.xml");                // DataSet的方法WriteXml将数据写入到XML文件,就是这么一句话。如果不保存到文件,直接ds.GetXML()                  }

    3、利用XmlSerializer来将类的属性值转换为XML文件的元素值。

    用一个字符串作为一个XML文档中的xmlAttribute或xmlElement。[其元素或属性由类的定义来设置(xml串行化)]

    using System;System.xml.Serialization;

    先初始化一个类,设置属性值

    var xmlDoc = new XmlDocument();//Create the xml declaration firstxmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));//Create the root node and append into docvar el = xmlDoc.CreateElement("Contacts");xmlDoc.AppendChild(el);// ContactXmlElement elementContact = xmlDoc.CreateElement("Contact");XmlAttribute attrID = xmlDoc.CreateAttribute("id");attrID.Value = "01";elementContact.Attributes.Append(attrID);el.AppendChild(elementContact);// Contact NameXmlElement elementName = xmlDoc.CreateElement("Name");elementName.InnerText = "Daisy Abbey";elementContact.AppendChild(elementName);// Contact GenderXmlElement elementGender = xmlDoc.CreateElement("Gender");elementGender.InnerText = "female";elementContact.AppendChild(elementGender);xmlDoc.Save("test1.xml");

    建XmlSerializer实例

    class XXX {                 XmlSerializer ser = new XmlSerializer(Type.GetType("forxml.truck"));                  Truck tr = new Truck();                    tr.ID = 1;                   tr.cheID = "赣A T34923";           }

    Serialize方法–完成对类的串行化

    XmlTextWriter xtw = new XmlTextWriter("myxml.xml",Encoding.UTF8);         用XmlTextWriter 创建一个XML文件            ser.Serialize(xtw, tr);               //如果只想显示,可以直接ser.Serialize(Console.Out, tr);}

    xml常用方法:
    定义xml文档:XmlDocument xmlDoc = new XmlDocument();
    初始化xml文档:xmlDoc.Load(“D:\book.xml”);//找到xml文件
    创建根元素:XmlElement xmlElement = xmlDoc.CreateElement(“”, “Employees”, “”);
    创建节点:XmlElement xeSub1 = xmlDoc.CreateElement(“title”);
    查找Employees节点:XmlNode root = xmlDoc.SelectSingleNode(“Employees”);
    添加节点:xe1.AppendChild(xeSub1);
    更改节点的属性:xe.SetAttribute(“Name”, “李明明”);
    移除xe的ID属性:xe.RemoveAttribute(“ID”);
    删除节点title:xe.RemoveChild(xe2);

    示例:写入xml

    1、创建xml文档
    public void CreateXMLDocument(){    XmlDocument xmlDoc = new XmlDocument();          //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>    XmlDeclaration xmlDeclar;    xmlDeclar = xmlDoc.CreateXmlDeclaration("1.0", "gb2312", null);    xmlDoc.AppendChild(xmlDeclar);          //加入Employees根元素    XmlElement xmlElement = xmlDoc.CreateElement("", "Employees", "");    xmlDoc.AppendChild(xmlElement);        //添加节点    XmlNode root = xmlDoc.SelectSingleNode("Employees");    XmlElement xe1 = xmlDoc.CreateElement("Node");    xe1.SetAttribute("Name", "薪薪代码");    xe1.SetAttribute("ISB", "2-3631-4");        //添加子节点    XmlElement xeSub1 = xmlDoc.CreateElement("title");    xeSub1.InnerText = "学习VS";    xe1.AppendChild(xeSub1);    XmlElement xeSub2 = xmlDoc.CreateElement("price");    xe1.AppendChild(xeSub2);    XmlElement xeSub3 = xmlDoc.CreateElement("weight");    xeSub3.InnerText = "20";    xeSub2.AppendChild(xeSub3);    root.AppendChild(xe1);    xmlDoc.Save("D:\\book.xml");//保存的路径}

    生成的xml文件如下:

    <?xml version="1.0" encoding="GB2312"?>-<Employees>-  <Node ISB="2-3631-4" Name="薪薪代码">    <title>学习VS</title>-    <price>      <weight>20</weight>    </price>  </Node></Employees>
    2 、增加节点
    XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("D:\\book.xml");//找到xml文件XmlNode root = xmlDoc.SelectSingleNode("Employees");//查找Employees节点XmlElement xe1 = xmlDoc.CreateElement("Node2");//添加Node2节点xe1.SetAttribute("Name", "张飞");XmlElement xeSub1 = xmlDoc.CreateElement("title");//定义子节点xeSub1.InnerText = "心情好";xe1.AppendChild(xeSub1);//添加节点到Node2root.AppendChild(xe1);//添加节点到EmployeesxmlDoc.Save("D:\\book.xml");

    结果:

    <?xml version="1.0" encoding="GB2312"?>  -<Employees>    -<Node ISB="2-3631-4" Name="薪薪代码">      <title>学习VS</title>-      <price>        <weight>20</weight>      </price>    </Node>-    <Node2 Name="张三">      <title>心情好</title>    </Node2>-    <Node2 Name="张三">      <title>心情好</title>    </Node2></Employees>
    3 、修改节点:
    public void ModifyNode(){    XmlDocument xmlDocument = new XmlDocument();    xmlDocument.Load("D:\\book.xml");    XmlNodeList nodeList = xmlDocument.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点    foreach (XmlNode xn in nodeList)//遍历    { XmlElement xe = (XmlElement)xn; if (xe.GetAttribute("Name") == "薪薪代码") {     xe.SetAttribute("Name", "薪薪");//更改节点的属性     XmlNodeList xnl = xe.ChildNodes;//获取xe的所有子节点     foreach (XmlNode xn1 in xnl)     {  XmlElement xe2 = (XmlElement)xn1;//将节点xn1的属性转换为XmlElement  if (xe2.Name == "title")//找到节点名字为title的节点  {      xe2.InnerText = "今天天气不好";  }  if (xe2.Name == "price")  {      XmlNodeList xnl2 = xe2.ChildNodes;      foreach (XmlNode xn2 in xnl2)      {   if (xn2.Name == "weight")   {       xn2.InnerText = "88";   }      }  }     } }    }    xmlDocument.Save("D:\\book2.xml");}

    运行结果:

    <?xml version="1.0" encoding="GB2312"?>-<Employees>-<Node ISB="2-3631-4" Name="薪薪"><title>今天天气不好</title>-<price><weight>88</weight></price></Node>-<Node2 Name="张三"><title>心情好</title></Node2></Employees>
    4 、删除节点
    public void DeleteNode(){    XmlDocument xmlDocument = new XmlDocument();    xmlDocument.Load("D:\\book1.xml");    XmlNodeList xnl = xmlDocument.SelectSingleNode("Employees").ChildNodes;    foreach (XmlNode xn in xnl)    { if (xn.Name == "Node") {     XmlElement xe = (XmlElement)xn;//将xn的属性转换为XmlElement     xe.RemoveAttribute("ID");//移除xe的ID属性     XmlNodeList xnl2 = xe.ChildNodes;     for (int i = 0; i < xnl2.Count; i++)     {  XmlElement xe2 = (XmlElement)xnl2.Item(i);  if (xe2.Name == "title")  {      xe.RemoveChild(xe2);//删除节点title  }     } }    }    xmlDocument.Save("D:\\book3.xml");}

    结果:

    <?xml version="1.0" encoding="GB2312"?>-<Employees>-<Node ISB="2-3631-4" Name="薪薪">-<price><weight>20</weight></price></Node>-<Node2 Name="张三"><title>心情好</title></Node2>-<Node2 Name="张三"><title>心情好</title></Node2></Employees>

    c#读取xml文件

    xml文件如下:

    <?xml version="1.0" encoding="utf-8" ?><configurationN>    <ServerAddress>1143</ServerAddress>    <ID>192.168</ID>  </configurationN>

    在写入xml文件时,最主要使用了两个方法:Load和Save。

    Load:初始化xml文档,以便项目文件获取具体的xml节点的值。

    public void Load(string path){    try    { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(path); XmlNodeList xnl = xmlDocument.SelectSingleNode(managerNode).ChildNodes; foreach (XmlNode xn in xnl) {     if (xn.Name == configuration_ServerAddress)     {  ServerAddress = xn.InnerText;     } }    }    catch(Exception ex)    { }}

    Save:在项目系统中进行修改配置文件值后,需要对xml进行重新保存

    public void Save(string path){    try    { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(path); XmlNodeList xnl = xmlDocument.SelectSingleNode(managerNode).ChildNodes; foreach (XmlNode xn in xnl) {     if (xn.Name == configuration_ServerAddress)     {  xn.InnerText = ServerAddress;     } } xmlDocument.Save(path);    }    catch (Exception ex)    { }}

    此处将所有代码都贴出来,方便下次实现。因为项目是WPF文件,而且都是简单控件,所以只贴出后台代码。

    class ConfigurationManager:INotifyPropertyChanged{        public const string managerNode = "configurationN";//根节点        public const string configuration_ServerAddress = "ServerAddress";//子节点        private string _ServerAddress;        public string ServerAddress        {            get { return _ServerAddress; }            set            {                _ServerAddress = value;                NotifyPropertyChanged("ServerAddress");            }        }        public void Load(string path)        {            try            {                XmlDocument xmlDocument = new XmlDocument();                xmlDocument.Load(path);                XmlNodeList xnl = xmlDocument.SelectSingleNode(managerNode).ChildNodes;                foreach (XmlNode xn in xnl)                {                    if (xn.Name == configuration_ServerAddress)                    {                        ServerAddress = xn.InnerText;                    }                }            }            catch(Exception ex)            { }        }        public void Save(string path)        {            try            {                XmlDocument xmlDocument = new XmlDocument();                xmlDocument.Load(path);                XmlNodeList xnl = xmlDocument.SelectSingleNode(managerNode).ChildNodes;                foreach (XmlNode xn in xnl)                {                    if (xn.Name == configuration_ServerAddress)                    {                        xn.InnerText = ServerAddress;                    }                }                xmlDocument.Save(path);            }            catch (Exception ex)            { }        }        public event PropertyChangedEventHandler PropertyChanged;        private void NotifyPropertyChanged(string propertyName)        {            if (PropertyChanged != null)            {                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));            }        }        public static ConfigurationManager Instance = new ConfigurationManager();}public partial class MainWindow : Window{        public MainWindow()        {            InitializeComponent();            Start();            this.tb1.Text = ConfigurationManager.Instance.ServerAddress.ToString();        }        private string path = "CONFIG\\System.xml";        private void button1_Click(object sender, RoutedEventArgs e)        {            ConfigurationManager.Instance.ServerAddress = this.tb1.Text;            ConfigurationManager.Instance.Save(path);        }        private void button2_Click(object sender, RoutedEventArgs e)        {            Application.Current.Shutdown();        }        private void Start()        {            ConfigurationManager.Instance.Load(path);        }}

    以上就是关于“C#读写xml文件的方法是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: C#读写xml文件的方法是什么

    本文链接: https://lsjlt.com/news/349586.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • C#读写xml文件的方法是什么
      这篇“C#读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#读写xml文件的方法是什么”文章吧。C...
      99+
      2023-07-05
    • C++、Qt分别读写xml文件的方法是什么
      这篇“C++、Qt分别读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++、Qt分别读写xml文件...
      99+
      2023-07-05
    • C#读写xml文件的方法有哪些
      在C#中读写XML文件的方法有以下几种: 使用XmlDocument类:XmlDocument类是System.Xml命名空间中...
      99+
      2024-03-01
      C#
    • c#中ini文件读写的方法是什么
      在C#中,可以使用System.IO命名空间下的StreamReader和StreamWriter类来读写INI文件。以下是一个简单...
      99+
      2024-03-11
      c#
    • C++OpenCV读写XML或YAML文件的方法详解
      目录前言1.如何使用1.1第一步:XML、YAML文件的打开1.2 第二步:进行文件读写操作1.3 第三步:vector(array)和map的输入和输出1.4 第四步:文件关闭2....
      99+
      2024-04-02
    • C++、Qt分别读写xml文件的方法实例
      目录XML语法C++使用tinyxml读写xmlQt读写xml总结 XML语法 第一行是XML文档声明,<>内的代表是元素,基本语法如以下所示。C++常见的是使...
      99+
      2023-03-06
      c++读写xml文件 qt读写xml文件 qt读取xml
    • C#读写xml文件方法总结(超详细!)
      目录C#写入xml文件1、XmlDocument2、DataSet对象里的值来生成XML文件3、利用XmlSerializer来将类的属性值转换为XML文件的元素值。示例:写入xml...
      99+
      2023-02-21
      c#读写xml文件 c# 读xml c#读取xml文件教程
    • python文件读写的方法是什么
      今天小编给大家分享一下python文件读写的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言:在Python中,...
      99+
      2023-06-29
    • c语言读取文件和写入文件的方法是什么
      在C语言中,读取文件的方法是使用`fopen`函数打开文件,然后使用`fread`或`fgetc`函数来读取文件的内容,最后使用`f...
      99+
      2023-08-09
      c语言
    • Java怎么读写XML文件
      本篇内容介绍了“Java怎么读写XML文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!import java.util.*;import ...
      99+
      2023-06-03
    • linux多进程读写文件的方法是什么
      Linux中多进程读写文件的方法有以下几种:1. 使用文件锁(File Locking):可以使用文件锁来确保在任意时刻只有一个进程...
      99+
      2023-09-27
      linux
    • qt多线程读写文件的方法是什么
      在Qt中,可以使用QThread类来实现多线程读写文件。首先,创建一个自定义的QThread子类,重写其run()函数,该函数会在子...
      99+
      2023-09-22
      qt
    • java文件读取和写入的方法是什么
      Java中读取和写入文件的方法有很多,以下是其中几种常用的方法: 使用File类:可以使用File类来创建、删除、重命名文件,以及...
      99+
      2023-10-23
      java
    • C#怎么读取XML文件
      这篇文章主要讲解了“C#怎么读取XML文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么读取XML文件”吧!用C#读取XML文件源程序代码,具体如下:using Syste...
      99+
      2023-06-17
    • android编程之xml文件读取和写入方法
      本文实例讲述了android编程之xml文件读取和写入方法。分享给大家供大家参考。具体分析如下: 一、环境: 主机:WIN8 开发环境:Eclipse 二、说明: 1.打开sd...
      99+
      2022-06-06
      xml文件 XML 方法 Android
    • C#读写文本文件(.txt)的方法实例
      读取txt文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(filePath) 或指定编码方式 File.ReadAllText(FilePath...
      99+
      2024-04-02
    • Qt读写XML文件的方法详解(含源码+注释)
      目录一、示例XML文件内容二、XML文件的写入三、XML文件的读取3.1 文件读取源码3.2 读取结果示例总结相关文章一、示例XML文件内容 下方为本文所使用的xml文件的内容 &l...
      99+
      2022-11-13
      qt读写xml文件 qt操作xml文件
    • python中csv文件读取与写入的方法是什么
      在Python中,我们可以使用`csv`模块来读取和写入CSV文件。下面是使用`csv`模块读取和写入CSV文件的方法:1. 读取CSV文件:```pythonimport csvwith open('file.csv', 'r') a...
      99+
      2023-08-11
      python
    • 使用C/C++读写.mat文件的方法详解
      目录一、创建工程并添加测试代码二、修改CmakeLists文件三、添加环境变量四、令人头秃的错误五、运行结果总结最近需要使用C++来处理matlab生成的数据, 参考了网上一些博客,...
      99+
      2024-04-02
    • C#操作xml文件的方法
      本篇内容介绍了“C#操作xml文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#操作xml文件实例是如何的呢?让我们先看看问题:已...
      99+
      2023-06-17
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作