代码改变世界

C# 操作XML

  Evan.Pei  阅读(130)  评论(0编辑  收藏  举报

XML存储数据的一种文本格式,以节点的方式存储,类似html,只是节点名称可以自己定义。

1.创建XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public void fun_createXML() {
            XmlNode xmlnode;
            XmlElement xmlelem;
            XmlDocument xmldoc = new XmlDocument();
            //创建根节点
            XmlDeclaration xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
            xmldoc.AppendChild(xmldecl);
            //创建员工节点容器
            xmlelem = xmldoc.CreateElement("", "Employees", "");
            xmldoc.AppendChild(xmlelem);
            //放三个员工到容器里面
            for (int i = 0; i < 3; i++)
            {
                //xmldoc.SelectSingleNode()查找某个节点
                xmlnode = xmldoc.SelectSingleNode("Employees");
                //创建节点
                XmlElement xe = xmldoc.CreateElement("node");
                xe.SetAttribute("name", "evan");//设置属性
                xe.SetAttribute("age", "27");
                //创建节点
                XmlElement kemu1 = xmldoc.CreateElement("title");
                kemu1.SetAttribute("id", "title");//设置属性
                kemu1.InnerText = "javascript";//设置文本
                xe.AppendChild(kemu1);//填充到xe节点中
 
                XmlElement score = xmldoc.CreateElement("score");
                score.InnerText = "86.5";
                xe.AppendChild(score);
 
                xmlnode.AppendChild(xe);
            }
            //在项目根目录创建XML文件
            xmldoc.Save(Server.MapPath("data3.xml"));
        }

2.读取XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public void fun_GetXML() {
           //System.IO.StreamReader myfile =
           //    new System.IO.StreamReader(Server.MapPath("data3.xml"),System.Text.Encoding.Default);
           //string mystring = myfile.ReadToEnd();//以文本的方式获取全部文本
           //myfile.Close();
           XmlDocument xd = new XmlDocument();
           xd.Load(Server.MapPath("data3.xml"));
           //获取所有子节点
           XmlNodeList xnlist = xd.SelectSingleNode("Employees").ChildNodes;
           for (int i = 0; i < xnlist.Count; i++) {
               XmlElement xe = (XmlElement)xnlist[i];
               Response.Write("名字是:"+xe.GetAttribute("name")+"</br>");//获取属性名称
               //获取子节点
               XmlNodeList xn2=xe.ChildNodes;
               for (int y = 0; y < xn2.Count; y++)
               {
                   XmlElement xe2 = (XmlElement)xn2[y];
                   if (xe2.Name == "title")//节点名称
                   {
                       Response.Write("科目是:" + xe2.InnerText + "</br>");
                   }
                   else {
                       Response.Write("分数数:" + xe2.InnerText + "</br>");
                   }
               }
           }
       }

3.修改XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void fun_updateXMLText()
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("data3.xml"));
            //获取所有子节点
            XmlNodeList nodelist = xd.SelectSingleNode("Employees").ChildNodes;
            //循环子节点
            foreach (XmlNode x in nodelist)
            {
                //转换
                XmlElement xe = (XmlElement)x;
                if (xe.Name == "NEWnode")
                {//判断节点名称
                    xe.InnerText = "bbbbbbbbbb";//修改里面的文本
                }
            }
            xd.Save(Server.MapPath("data3.xml"));//重新保存
 
        }

4.添加XML

1
2
3
4
5
6
7
8
9
10
11
12
public void fun_addNodeXML() {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("data3.xml"));
            XmlNode xn = xd.SelectSingleNode("Employees");
 
            XmlElement xe = xd.CreateElement("NEWnode");
            xe.InnerText = "NEWnodeTEXT";
            xn.AppendChild(xe);
 
            xd.Save(Server.MapPath("data3.xml"));
 
        }

 5.删除XML节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load( Server.MapPath("data.xml") );
XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes;
foreach(XmlNode xn in xnl)
{
    XmlElement xe=(XmlElement)xn;
    xe.RemoveAttribute("genre");//删除genre属性
 
    XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
    foreach(XmlNode xn1 in nls)//遍历
    {
        XmlElement xe2=(XmlElement)xn1;//转换类型
        if(xe2.Name=="flag")//如果找到
        {
            xe.RemoveChild(xe2);//则删除
        }
    }
}
xmlDoc.Save( Server.MapPath("data.xml") );

  

  

  

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示