C# xml文件的创建,修改和添加节点 。

2023-05-16

最近在做一个项目,设计到xml文件的传输,所以就研究了一下。

,.NET Framework完全支持XML DOM模式,但它不支持SAX模式。.NET Framework支持两种不同的分析模式:XML DOM分析器(XMLDocument类)和XML阅读器(XMLTextReader类),不支持SAX分析器, 但这并不意味着它没有提供类似SAX分析器的功能。通过XML阅读器可以将SAX的所有的功能很容易的实现及更有效的运用。

但是我们一般运用最多的是DOM。

一、创建xml文件

        using System.Xml;
        using System.IO;//这个一定要写

         XmlDocument xmlDoc = new XmlDocument();
            //加入XML的声明段落,Save方法不再xml上写出独立属性
            xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
           //加入根元素
   
            XmlElement root = xmlDoc.CreateElement("ROOT");
            xmlDoc.AppendChild(root);

            XmlElement memberlist = xmlDoc.CreateElement("MEMBERLIST");
          
            XmlElement memberA = xmlDoc.CreateElement("MEMBER");
            memberA.SetAttribute("AGE", ">=29");
            memberA.SetAttribute("SEX", "MALE");
            XmlElement zs = xmlDoc.CreateElement("NAME");
            zs.InnerText = "张三";
            XmlElement ls = xmlDoc.CreateElement("NAME");
            ls.InnerText = "李四";
            memberA.AppendChild(zs);
            memberA.AppendChild(ls);

            XmlElement memberB = xmlDoc.CreateElement("MEMBER");
            memberB.SetAttribute("AGE", ">=35");
            memberB.SetAttribute("SEX", "MALE");
            XmlElement ww = xmlDoc.CreateElement("NAME");
            ww.InnerText = "王五";
            XmlElement zl = xmlDoc.CreateElement("NAME");
            zl.InnerText = "赵六";
            memberB.AppendChild(ww);
            memberB.AppendChild(zl);

            memberlist.AppendChild(memberA);
            memberlist.AppendChild(memberB);
            root.AppendChild(memberlist);
            xmlDoc.Save(xmlpath);            
       

效果如下:

<?xml version="1.0" encoding="UTF-8"?>

<ROOT>
     <MEMBERLIST>
            <MEMBERAGE=">=29"SEX="MALE">
                      <NAME>李四</NAME>
                   <NAME/>                  
         </MEMBER>
            <MEMBERAGE=">=35"SEX="MALE">
                        <NAME>王五</NAME>
                        <NAME>赵六</NAME>
           </MEMBER>
    </MEMBERLIST>
</ROOT>
看上面成功倒是成功了,不过由于粗心,在*这行的NAME标签出错了。我想把第一个NAME改为张三,第二个NAME改为李四
二、修改xml文件
  c#代码如下:
 XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlpath);
            XmlNode memberlist = xmlDoc.SelectSingleNode("ROOT/MEMBERLIST");
            XmlNodeList nodelist=memberlist.ChildNodes;
           // XmlNodeList nodelist=xmlDoc.GetElementsByTagName("MEMBER");
            foreach (XmlNode node in nodelist)
            {
                if (node.Attributes["AGE"].InnerText.ToString().Equals(">=29"))
                {
                    node.ChildNodes[0].InnerText = "张三";
                    node.ChildNodes[1].InnerText = "李四";
                    break;
                }
            }
            xmlDoc.Save(xmlpath);
            MessageBox.Show("保存成功");
xml效果如下:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
     <MEMBERLIST>
            <MEMBERAGE=">=29"SEX="MALE">
                      <NAME>张三</NAME>
                      <NAME>李四</NAME>                 
          </MEMBER>
            <MEMBERAGE=">=35"SEX="MALE">
                        <NAME>王五</NAME>
                        <NAME>赵六</NAME>
             </MEMBER>
         </MEMBERLIST>
  </ROOT>
这时候,如果增加人员的情况下,我还需要添加节点。
三、xml文件添加节点如下
c#代码如下
 XmlDocument xmlDoc = new XmlDocument();
            if (File.Exists(xmlpath))
            {
                xmlDoc.Load(xmlpath);
                XmlNode memberlist = xmlDoc.SelectSingleNode("ROOT/MEMBERLIST");
                XmlElement member = xmlDoc.CreateElement("MEMBER");
                member.SetAttribute("AGE", "<29");
                member.SetAttribute("SEX", "MAIL");
                XmlElement lq = xmlDoc.CreateElement("NAME");
                lq.InnerText = "六七";
                member.AppendChild(lq);
                memberlist.AppendChild(member);
                xmlDoc.Save(xmlpath);
                MessageBox.Show("添加成功");
            }
            else
            {
                MessageBox.Show("文件不存在");
            }
效果如下:
<<ROOT>
     <MEMBERLIST>
            <MEMBERAGE=">=29"SEX="MALE">
                     <NAME>张三</NAME>
                     <NAME>李四</NAME>                 
          </MEMBER>
            <MEMBERAGE=">=35"SEX="MALE">
                       <NAME>王五</NAME>
                       <NAME>赵六</NAME>
             </MEMBER>
        <MEMBERAGE="<29" SEX="MALE">
                       <NAME>六七</NAME>
             </MEMBER>
         </MEMBERLIST>
< </ROOT>
  有几点要记住了,XmlNode包含XmlElement,即XmlNode可以转化为XmlElement而XmlElement不可以转化为XmlNode.
xmDoc.selectSingleNode("节点名称").这个节点名称是他的路径。若是根节点当时只写名称就可以了,若是子节点,则需要些明从根节点到它的路径。
 
再就是遍历xml文件,这个就不记录了,上面这些操作会了,遍历就不是问题了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# xml文件的创建,修改和添加节点 。 的相关文章

随机推荐

  • C#中文件及文件夾的遍历

    操作文件常用的类有 xff1a File 实用类 xff0c 提供许多静态方法 xff0c 用于移动 删除 和复制文件 Directory 实用类 xff0c 提供许多静态方法 xff0c 用于移动 删除和复制目录 Path 实用类 xff
  • C# 简单的XML读取修改写入

    XML概念 Root XML根节点 xff0c 只能且必须有一个 以上为LinkLibrary Element 节点元素 如Link Attribute 节点属性 如Cat Url Desc Content 内容 xff08 非空白文本 C
  • C# XML 添加,修改,删除Xml节点

    添加xml节点 private void AddXml string image string title XmlDocument xmlDoc 61 new XmlDocument xmlDoc Load Server MapPath 3
  • 使用Activator.CreateInstance完善简单工厂

    前几天在项目中看到别人的工厂类使用Activator CreateInstance 之前用简单工厂都是用switch case xff0c 之前没有用过便查了查资料 xff0c 正是这个方法 43 反射简化了工厂模式 xff0c 在需求增加
  • can协议的数据帧格式

    1 帧起始和帧结束 2 仲裁段 xff1a 3 控制段 xff1a 4 数据段 5 CRC段 6 ACK段
  • C#各种配置文件使用,操作方法总结

    配置文件操作 配置文件一般分为内置配置文和用户自定义配置文件 内置配置文件包括app config web config Settings settings等等 用户自定义配置文件一般是将配置信息放到XML文件或注册表中 xff0c 配置信
  • C#中配置文件的使用

    1 向项目添加app config文件 xff1a 右击项目名称 xff0c 选择 添加 添加新建项 xff0c 在出现的 添加新项 对话框中 xff0c 选择 添加应用程序配置文件 xff1b 如果项目以前没有配置文件 xff0c 则默认
  • C# 获取主机IP地址

    public static string GetIP string strAddr 61 34 34 try string strHostName 61 System Net Dns GetHostName System Net IPHos
  • C#中的继承与多态还有接口

    简单继承多态接口参考 简单继承 最简单的三个类 csharp view plain copy print public class Animal public Animal Debug Log 34 Construct Animal 34
  • C#操作配置文件中appSettings,connectionStrings节点

    using System using System Configuration using System Web using System Web Configuration namespace myConfiguration region
  • C# 配置文件读取与修改

    目录 43 旧方法 各位看官最好使用下面新方法新方法 配置文件在很多情况下都使用到 配置文件分为两种 一种是应用程序的配置文件 一种是web的配置文件 两种配置文件最大的区别是web的配置文件更新之后会实时更新 应用程序的配置文件不会实时更
  • AppSettings和ConnectionStrings的区别

    ConfigurationSettings AppSettings 34 34 和 ConfigurationManager ConnectionStrings 34 34 ConnectionStrings有什么区别 xff1f 晕呀 更
  • appsetting 和connectionString 的区别。

    AppSettings是ASP NET1 1时期用的 在 NET Framework 2 0中 xff0c 新增了ConnectionStrings 1 lt connectionStrings gt lt connectionString
  • 配置文件的方式总结

    1 xml文件存储配置信息 xff0c 属性中可设置输出到应用程序输出路径拷贝 xff0c 程序中读写使用 xff0c 程序修改只需修改xml文件然后覆盖到输出路径中 2 AppConfig文件存储 xff0c 可设置属性输出路径 xff0
  • 计算机大端模式和小端模式 内存对齐问题(sizeof)

    目录 43 一大端模式和小端模式的起源二什么是大端和小端三数组在大端小端情况下的存储四为什么会有大小端模式之分呢五如何判断机器的字节序内存对齐问题 再讲讲pragma pack 内存对齐二 一 大端模式和小端模式的起源 关于大端小端名词的由
  • linux虚拟机关机、重启命令

    一 shutdown 1 shutdown h now xff1a 立即关机 2 shutdown h 10 53 xff1a 到10 53关机 3 shutdown h 43 10 xff1a 10分钟后自动关机 4 shutdown r
  • C#函数的重载

    函数名必须相同方能构成函数重载 函数返回值类型 可以相同 也可以不同 注意 函数的返回类型不足以区分两个重载函数 函数参数类型 必须不同 函数参数个数 可以相同 可以不同 函数参数顺序 可以相同 可以不同 csharp view plain
  • 静态方法和实例化方法的本质区别

    本文章已收录于 xff1a 这是一个经常被时时提出来的问题 xff0c 很多时候我们以为理解了 懂了 xff0c 但深究一下 xff0c 我们却发现并不懂 方法是我们每天都在写得 xff0c 很多程序员大多都使用实例化方法 xff0c 而很
  • string,StringBuffer与StringBuilder的区别

    String 字符串常量 StringBuffer 字符串变量 xff08 线程安全 xff09 StringBuilder 字符串变量 xff08 非线程安全 xff09 简要的说 xff0c String 类型和 StringBuffe
  • C# xml文件的创建,修改和添加节点 。

    最近在做一个项目 xff0c 设计到xml文件的传输 xff0c 所以就研究了一下 xff0c NET Framework完全支持XML DOM模式 xff0c 但它不支持SAX模式 NET Framework支持两种不同的分析模式 xff