• c# 操作xml文件


    1. xml操作

      xml使用注意

      xml文件头 <?xml version="1.0" encoding="utf-8" ?> 
      字符转义 <age><![CDATA[<18>]]></age>  
      xml严格区分大小写,只能有一个跟节点,属性值必须使用双引号
      

      写入xml文件

      XmlDocument形式
          XmlDocument xml = new XmlDocument(); // 创建xml文档对象
          xml.AppendChild(xml.CreateXmlDeclaration("1.0", "utf-8", null)); // 创建文件头
          var student = xml.CreateElement("Student"); // 创建子节点
          student.Attributes.Append(xml.CreateAttribute("id")).Value = 1.ToString(); // 创建属性
          student.InnerText = "小红"; // 创建文本节点
          xml.AppendChild(xml.CreateElement("Class").AppendChild(student)); // 创建根元素
          xml.Save("test.xml"); // 保存xml
      XDocument形式(linq to xml)
          XDocument xd = new XDocument(); // 创建xml文本对象
          xd.Declaration = new XDeclaration("1.0", "utf-8", null); // 添加文件头
          var root = new XElement("Test"); // 添加根元素
          var student = new XElement("Student");
          student.SetAttributeValue("id", 1.ToString());
          student.AddFirst(new XText("小明"));
          root.Add(student);
          xd.Add(root);
          xd.Save("text.xml");
      

      读取xml文件

      XmlDocument形式
          XmlDocument xd = new XmlDocument();
          xd.Load("text.xml");
          XmlElement root = xd.DocumentElement; // 读取根节点
          XmlNodeList nodes = root.GetElementsByTagName("Student"); // 获取子节点
      XDocument形式
          XDocument xd = XDocument.Load("test.xml");
          XElement root = xd.Root; // 读取根节点
          IEnumerable nodes = root.Elements("Student");
          IEnumerable nodes = xd.Root.Elements().Where(item => int.Parse(item.Attribute("id").Value) > 2);
      

      XPath应用

      Xpath写法
          /persons/person 表示查找根节点persons下面的所有person子节点
          //person 表示递归查找,相当于全文搜索
          //person/Name 找所有person节点下面的Name节点
          //person/* 找所有person下的所有子节点
          //* 找所有节点
          /persons/person[1] 找第一个person
          /persons/person[last()] 找最后一个
          //@id 查找属性节点
          //person[@id] 找具有id的person节点
          //Name[not(@*)] 找不包含属性的Name节点
          //person[@id='1'] 找id是1的person节点
          //person[normalize-space(@id)='1'] 找id是1的person节点(去掉id属性值空格之后的)
          //*[count(person)=3] 找包含3个person的父节点
          //*[starts-with(name(),'N')] 选择标签名以N开头的元素
          //*[contains(name(),'a')] 选择标签名包含a的元素
          //*[string-length(name()) = 3] 获取标签名的长度是3的元素
          //Name | //Age 获取Name和Age节点
      使用xpath方式 XmlNodeList nodes = xd.SelectNodes("//person[@id='1']");
      
  • 相关阅读:
    南大《软件分析》课程笔记——Intermediate Representation
    leetcode刷题
    shiro550反序列化分析
    南大《软件分析》课程笔记——第一课
    再见2020
    S2-002漏洞分析
    编码&解码工具
    正码、反码和补码
    Java数据结构(二)
    Java数据集合
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/8185778.html
Copyright © 2020-2023  润新知