XML概述

1.XML说明:可扩展标记语言,XML是国际通用的,它是用来传输和存储数据的一种文本特殊格式,后缀名一般为.xml,xml是一种树形结构;

XML文件格式

XML基本语法

1.编码格式:不同的字符,在内存中的二进制是不一样的,每一个字符对应一个数字,不同的编码格式字符对应的二进制是不一样的,否则会出现乱码;

2.注释:

3.固定语法:

4.基本语法:<元素标签>元素内容</元素标签>,多层嵌套包裹,形成树形结构,如下规则

  • 每个元素都必须有关闭标签;
  • 元素命名规则基本遵照C#中变量名命名规则;
  • XML标签对大小写敏感;
  • XML文档必须有根元素
  • 特殊的符号应该用实体引用
    • &lt — < 小于
    • &gt — >大于
    • &amp — &和号
    • &apos — ‘ 单引号
    • &quot — “ 引号

XML 教程 | 菜鸟教程 (runoob.com)

XML属性

1.属性语法:<元素标签 子元素名=”值” >元素内容</元素标签> or <元素标签 子元素名=”值” />

2.查语法错误:可以使用专门的xml软件,也可以在菜鸟验证对错;

XML 验证器 | 菜鸟教程 (runoob.com)

C#中XML存取使用

unit中xml文件存取位置

1.只读不取:可以放在Resources或者StreamingAssets文件夹下,一般作为配置文件使用;

2.动态存储:放在Application.presistentDataPath路径下;

C#读取XML

1.C#读取XML的方法
        //1.XmlDocument    (把数据加载到内存中,方便读取)
        //2.XmlTextReader  (以流形式加载,内存占用更少,但是是单向只读,使用不是特别方便,除非有特殊需求,否则不会使用)
        //3.Linq           (以后专门讲Linq的时候讲)
        //使用XmlDocument类读取是较方便最容易理解和操作的方法
        
2.读取API
        //1.读取XML文件
        //XmlDocument xml = new XmlDocument();
        //读取文本方式1-xml.LoadXml(先用资源加载出来为TextAsset文件,再传入xml文本字符串)
        //读取文本方式2-xml.Load(传入路径)

        //2.读取元素和属性
        //获取单个节点 : XmlNode node = xml.SelectSingleNode(节点名)
        //获取多个节点 : XmlNodeList nodeList = xml.SelectNodes(节点名)

        //获取节点元素内容:node.InnerText
        //获取节点元素属性:
        //1.item.Attributes["属性名"].Value
        //2.item.Attributes.GetNamedItem("属性名").Value

        //通过迭代器遍历或者循环遍历XmlNodeList对象 可以获取到各单个元素节点

C#存储XML

1.Unity推荐储存
        //注意:存储xml文件 在Unity中一定是使用各平台都可读可写可找到的路径
        // 1.Resources 可读 不可写 打包后找不到  ×
        // 2.Application.streamingAssetsPath 可读 PC端可写 找得到  ×
        // 3.Application.dataPath 打包后找不到  ×
        // 4.Application.persistentDataPath 可读可写找得到   √
        
2.C#存取
        //2.存储xml关键类
        //XmlDocument  文件  
        //   创建节点 CreateElement()
        //   创建固定内容方法 CreateXmlDeclaration()
        //   添加节点 AppendChild()
        //   保存 Save()
        //XmlDeclaration 版本
        //XmlElement 元素节点  
        //   设置属性方法SetAttribute()

        //3.修改
        //RemoveChild()移除节点
        //可以通过 /的形式 来表示 子节点的子节点