C# XmlDocument处理XML元素节点

目录

  • 前言
  • 一、XmlDocument
    • 1.简单流程
    • 2.XmlNode和XmlElement的区别
  • 二、代码
    • 1.简单代码
  • 总结


前言

想修改一个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());
        }

总结

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

你可能感兴趣的:(c#,xml,java)