【Unity】读写xml文件详解

什么是xml文件?

xml文件是一种可拓展标记语言,由于简单易用,常被应用程序用于保存数据,unity也是如此,在我们需要控制读写用户的存档时,除了unity自带的PlayerPrefs或者是json,最常用到的就是xml文件,本篇 文章详细介绍unity(c#)中如何操控xml文件

xml文件的结构

先来看看一个完整的xml文件长什么样

<?xml version="1.0" encoding="UTF-8"?>
<student>
  <student1 name="椎名">
    <age>5</age>
    <sex>man</sex>
  </student1>
  <student2 name="mikan">
    <age>10</age>
    <sex>woman</sex>
  </student2>
  <student3 name="みかん">
    <age>15</age>
    <sex>woman</sex>
  </student3>
</student>

一、文档声明:从文档可见,第一行的"<?xml version="1.0" encoding="UTF-8"?>"为xml文件的声明,意思是文档符合xml1.0规范,默认编码为UTF-8

二、根节点:这里的<student>为根节点,名称可以随意定义,它是文档里唯一的节点,开始于文档开头,结束于文档最末尾

三、元素:示例中<age>10</age>即为xml中的元素,<age>和</age>分别为开始标签和结束标签,10为元素的内容(注:xml的标签区分大小写,如写成<age>和</Age>则无法识别)

四:属性:文档示例"<student1 name=“椎名”></student1>"中,name即为元素student1的属性,一个元素可以拥有多个属性

如何读写xml文件

大致介绍完xml文件,现在来看看如何在unity中读写xml文件(后面使用的示例还是上面的文档)

  • C#要读写xml文件,首先要引用System.Xml
using System.Xml;
  • 用unity的Resources.Load加载文件
TextAsset xmlFile = Resources.Load<TextAsset>(path); //加载path路径下的xml文件内容
XmlDocument document = new XmlDocument(); //创建xml文件的变量
document.LoadXml(xmlFile.text); //让xml文件变量读取xmlFile内的文本
  • 解析xml,先获取根节点下的所有子节点
XmlNodeList nodeList = document.SelectSingleNode("student").ChildNodes; //将student节点的子节点加入至nodeList
  • 将nodelist下的某个子节点转化成xml元素,就可以进行读写了
XmlElement elementStudent = (XmlElement)nodeList[num]; //子节点转化为元素

elementStudent.GetAttribute("name"); //获取元素的name属性,如果上一行num为0,则这里返回的是"椎名"
elementStudent.InnerText //获取元素的内容
  • 完整代码
using UnityEngine;
using System.Xml;

public class XmlTest : MonoBehaviour
{
    private void Start()
    {
        TextAsset xmlFile = Resources.Load<TextAsset>("xml");
        XmlDocument document = new XmlDocument();
        document.LoadXml(xmlFile.text);

        XmlNodeList nodeList = document.SelectSingleNode("student").ChildNodes;
        XmlElement elementStudent = (XmlElement)nodeList[0];

        Debug.Log(elementStudent.GetAttribute("name"));
        foreach (XmlElement element in elementStudent.ChildNodes)
        {
            Debug.Log(element.InnerText);
        }
    }
}
  • 将文章开头的完整xml文档放在unity中Resources文件夹里,然后将上面的代码随便挂在一个物体上,运行游戏

在这里插入图片描述
可以发现成功将student1的属性"name"和student1中的age和sex这两个元素的内容打印出来了
在这里插入图片描述
ok,关于如何unity读写xml文件就介绍到这里,感谢大家的阅读。
如果对unity开发感兴趣,可以加入我们的交流群共同探讨!!
群号:385075578
个人QQ:792006305

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值