C#基础_XML文件读写

使用C#对XML文件进行操作,包括生成一个XML文档,以及读取XML文档中的内容,修改某个元素中的内容

RWXml类如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引用命名空间
using System.Xml;

namespace ConsoleApp1
{
    public class RWXml
    {
        /// <summary>
        /// 生成一个XML文档
        /// </summary>
        public void WriteXml()
        {
            Random rd = new Random();

            //首先创建XML文档
            /*1、实例化一个XmlDocument类*/
            XmlDocument xDoc = new XmlDocument();
            //创建XML声明
            XmlDeclaration declaration = xDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");//版本号,编码格式,返回值是一个声明
            //将指定的节点添加到该节点的子节点的列表的末尾,此处是添加声明
            xDoc.AppendChild(declaration);
            //一个XML文档,至少得有一个根元素
            //创建根节点,返回值是一个元素
            XmlElement elem = xDoc.CreateElement("students");//创建具有指定名称的元素
            xDoc.AppendChild(elem);//添加根节点

            for (int i = 1; i < 10; i++)
            {
                //添加子节点到根节点里面
                XmlElement elem1 = xDoc.CreateElement("student");//创建子节点
                elem.AppendChild(elem1);//将第一级的子节点添加到根节点后面

                添加子节点的节点
                //XmlElement elsm1_1 = xDoc.CreateElement("name");
                //elem1.AppendChild(elsm1_1);

                //给节点添加属性
                elem1.SetAttribute("姓名", "张三");//设置具有指定名称的属性的值,属性名称,属性值
                elem1.SetAttribute("学号", i.ToString());

                //添加子节点的节点
                XmlElement elem1_1 = xDoc.CreateElement("语文成绩");
                elem1.AppendChild(elem1_1);
                elem1_1.InnerText = rd.Next(40, 120).ToString();

                XmlElement elem1_2 = xDoc.CreateElement("数学成绩");
                elem1.AppendChild(elem1_2);
                elem1_2.InnerText = rd.Next(40, 120).ToString();

                XmlElement elem1_3 = xDoc.CreateElement("英语成绩");
                elem1.AppendChild(elem1_3);
                elem1_3.InnerText = rd.Next(40, 120).ToString();

                //修改指定学号的学生的指定科目成绩
                if ((i%3) == 0)
                {
                    //XmlElement elem1_1 = xDoc.CreateElement("语文成绩");
                    elem1.AppendChild(elem1_1);
                    elem1_1.InnerText = 100.ToString();

                    //XmlElement elem1_2 = xDoc.CreateElement("数学成绩");
                    elem1.AppendChild(elem1_2);
                    elem1_2.InnerText = 120.ToString();

                    //XmlElement elem1_3 = xDoc.CreateElement("英语成绩");
                    elem1.AppendChild(elem1_3);
                    elem1_3.InnerText = 80.ToString();
                }
            }
            xDoc.Save("students.xml");
        }

        /// <summary>
        /// 读取XML文档
        /// </summary>
        public void ReadXml()
        {
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load("students.xml");

            //获取到根节点
            XmlNode rootNode = xDoc.SelectSingleNode("students");
            XmlNodeList nodeList = rootNode.ChildNodes;//获取节点的所有子节点

            foreach (XmlNode no in nodeList)
            {
                //类型显示转换
                XmlElement elem = (XmlElement)no;//将节点转换为元素,方便后面获取属性
                string name = elem.GetAttribute("姓名");
                string number = elem.GetAttribute("学号");
                //输出名字和学号信息
                Console.WriteLine("姓名:" + name + "  学号:" + number);

                //获取子节点的所有节点
                XmlNodeList childList = elem.ChildNodes;
                foreach (XmlNode child in childList)
                {
                    XmlElement childElem = (XmlElement)child;//节点转换为元素

                    string className = childElem.Name;//获取节点的名称
                    string score = childElem.InnerText;//获取节点的值
                    Console.WriteLine(className + ":" + score);
                }
            }
            xDoc.Save("students.xml");
            Console.ReadLine();
        }
    }
}

main函数如下:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            RWXml rWXml = new RWXml();
            rWXml.WriteXml();
            rWXml.ReadXml();
        }
    }
}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# XML文件操作源码,以及如何调用,注释详解,有任何问题请留言, 以下截取xml文件和部分调用代码段: * ++++++++++++++++++++++++++++++++++++++ <?xml version="1.0" encoding="utf-8" standalone="no"?> <!--TestPlugins的信息--> <!--DataPlugins的信息--> * ++++++++++++++++++++++++++++ xml xl = new xml(); xl.XMLWriteRootNode("info"); //XmlElement Eml1 = xl.XMLReadNode("",0); //XmlElement Eml2 = xl.XMLReadNode("DataPlugins", 1); //XmlElement Eml4 = xl.XMLReadNode("DeviceInfo", 2); // TestPlugins XmlElement testPlugins = xl.XMLCreateNode("TestPlugins", null, null); xl.XMLInsertNode("info", 0, "TestPlugins的信息", testPlugins); // FixturePlugin XmlElement fixturePlugin = xl.XMLCreateNode("TestPlugin", null, new Dictionary() { { "Type", "FixturePlugin" } }); xl.XMLInsertNode(testPlugins.LocalName, 1, null, fixturePlugin); // DUTPlugin XmlElement DUTPlugin = (XmlElement)fixturePlugin.CloneNode(true);// xl.XMLCreateNode("TestPlugin", null, new Dictionary() { { "Type", "DUTPlugin" } }); DUTPlugin.SetAttribute("Type", "DUTPlugin"); xl.XMLInsertNode(testPlugins.LocalName, 1, null, DUTPlugin); // Agilent34461APlugin XmlElement Agilent34461APlugin = xl.XMLCreateNode("TestPlugin", null, new Dictionary() { { "Type", "Agilent34461APlugin" } }); xl.XMLInsertNode(testPlugins.LocalName, 1, null, Agilent34461APlugin); // ================================== // DataPlugins XmlElement dataPlugins = xl.XMLCreateNode("DataPlugins", null, null); xl.XMLInsertNode("info", 0, "DataPlugins的信息", dataPlugins); // CSVLogPlugin XmlElement csvlogPlugin = xl.XMLCreateNode("DataPlugin", null, new Dictionary() { { "Type", "CSVLogPlugin" } }); xl.XMLInsertNode(dataPlugins.LocalName, 1, null, csvlogPlugin); XmlElement uartlogPlugin = (XmlElement)csvlogPlugin.CloneNode(true); uartlogPlugin.SetAttribute("Type", "UartLogPlugin"); xl.XMLInsertNode(dataPlugins.LocalName, 1, null, uartlogPlugin); XmlElement testlogPlugin = (XmlElement)csvlogPlugin.CloneNode(true); testlogPlugin.SetAttribute("Type", "TestLogPlugin"); xl.XMLInsertNode(dataPlugins.LocalName, 1, null, testlogPlugin); }
回答: 在C#中,使用Linq to XML可以方便地进行XML文件操作。首先,我们需要加载XML文件,可以使用XDocument类的Load方法来加载文件\[1\]。然后,我们可以通过获取根元素来访问XML文件的内容,使用Root属性可以获取根元素\[2\]。接下来,我们可以使用Elements方法获取根元素的所有直接子元素,并通过遍历这些子元素来获取它们的名称和属性值\[2\]。如果需要进一步访问子元素的子元素,可以使用Elements方法继续获取\[2\]。另外,如果XML文件中使用了命名空间,我们可以使用XName类的Get方法来指定命名空间\[3\]。通过这些方法,我们可以方便地取和解析XML文件中的数据。当需要入XML文件时,可以使用XDocument类的Save方法将修改后的XML文件保存到指定的路径。 #### 引用[.reference_title] - *1* *3* [Linq to Xmlxml](https://blog.csdn.net/donghan2019/article/details/101946892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C#基础精华06(Linq To XML,取xml文件入xml)](https://blog.csdn.net/XHQT520/article/details/50401669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值