C# XmlDocument处理XML元素节点


前言

想修改一个XML文件的属性值,简单的代码实现


一、XmlDocument

Net中的XmlDocument类。它支持并扩展了W3C XML DOM标准。可使用此类在文档中加载、验证、编辑、添加和放置 XML。

它将整个XML文档都先装载进内存中,然后再对XML文档进行操作,所以如果XML文档内容过大,不建议使用XmlDocument类,因为会消耗过多内存。

对于很大的XML文档,可以使用XmlReader类来读取。因为XmlReader使用Steam(流)来读取文件,任何时候在内存中只有当前节点,但它也有它的不足,它是只读的,仅向前的,不能在文档中执行向后导航操作,所以不会对内存造成太大的消耗。

1.简单流程

使用XmlDocument读取XML,并遍历根节点下的所有子节点,将XmlNode节点转为XmlElement进行处理。

2.XmlNode和XmlElement的区别

1、通过继承关系XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElement是XmlNode的子类。我们知道子类继承了父类所有的属性和方法,因此,XmlNode所拥有的方法和属性,在XmlElement类中也是可以使用的。
2、XmlElement是特殊的XmlNode类,Xml节点有多种类型:属性节点、注释节点、文本节点、元素节点等。也就是XmlNode是这多种节点的统称。但是XmlElement专门指的就是元素节点

二、代码

1.简单代码

代码如下(示例):

            // 采用XmlDocument操作XML
            XmlDocument doc = new XmlDocument();
            doc.Load(@"Monster-S17-2-2.xml");

            // 获取根节点
            XmlNode root = doc.SelectSingleNode("MonsterList");
            // 获取根节点下的所有子节点
            XmlNodeList child = root.ChildNodes;
            // 循环遍历修改XML文件
            foreach (XmlNode children in child)
            {
                // 得到web节点的所有子节点
                XmlElement xe = (XmlElement)children;//将节点转换一下类型
                SetXml(xe, "MaxLife",5);
                SetXml(xe, "DamageMin", 3.5f);
                SetXml(xe, "DamageMax", 2.5f);
                SetXml(xe, "DamageMax", 2.5f);
                SetXml(xe, "ElementalDefense", 6);
                SetXml(xe, "ElementalDamageMin", 1.6f);
                SetXml(xe, "ElementalDamageMax", 1.6f);
            }

            // 保存修改
            doc.Save(@"Monster-S17-2-3.xml");
        public static void SetXml(XmlElement xe, string node,float times)
        {
            string sMaxlife = xe.GetAttribute(node);
            int nodeData = int.Parse(sMaxlife);
            nodeData = (int)(nodeData * times);
            xe.SetAttribute(node, nodeData.ToString());
        }

总结

第一次写博客,以后想将学习到的东西都记录下来
当笔记去用。 😃

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值