Unity中使用xml文件(非序列化)

1、在StreamingAssets文件夹下面新建一个test.xml文件。

2、编辑该文件,输入并保存如下内容

<root>
	<username>蔡徐坤</username>
	<password>jinitaimei</password>
	<fans>
		<fan name="张三" age="11"/>
		<fan name="李四" age="12"/>
		<fan name="爱因斯坦" age="18"/>
	</fans>
</root>

3、新建一个Test.cs脚本。

using UnityEngine;
using System.Xml;

public class Test : MonoBehaviour
{
    void Start()
    {
        //初始化一个xml实例
        XmlDocument xmlDocument = new XmlDocument();

        //加载指定xml文件
        xmlDocument.Load(Application.streamingAssetsPath+"/test.xml");

        //指定一个单独节点
        XmlNode rootNode = xmlDocument.SelectSingleNode("root");

        //指定一个username节点;(当前指定了根节点,在使用SelectSingleNode方法时,只会在它的子层寻找,不能找到孙子层)
        XmlNode usernameNode = rootNode.SelectSingleNode("username");

        //打印当前节点的文本(打印结果为蔡徐坤)
        print(usernameNode.InnerText);

        //获取蔡徐坤所有粉丝的根节点 (这里也可以使用xmlDocument对象使用绝对路径查找)
        XmlNode fansNode = xmlDocument.SelectSingleNode("/root/fans");

        //得到所有粉丝
        XmlNodeList fansNodeList = fansNode.ChildNodes;
        foreach (XmlNode fanNode in fansNodeList)
        {
            //获取粉丝属性的两种方式
            print(fanNode.Attributes[0].Value);
            print(fanNode.Attributes.GetNamedItem("age").Value);

            //爱因斯坦不是他的粉丝。移除这个节点
            if (fanNode.Attributes[0].Value == "爱因斯坦")
            {
                fansNode.RemoveChild(fanNode);
            }
        }

        //新建一个粉丝
        XmlElement newFan = xmlDocument.CreateElement("fan");

        //设置新建粉丝属性
        newFan.SetAttribute("name", "吴亦凡");
        newFan.SetAttribute("age", "18");

        //将新建的粉丝加入fans
        fansNode.AppendChild(newFan);

        //保存上面对xmlDocument的操作
        xmlDocument.Save(Application.streamingAssetsPath + "/test.xml");
    }
}

4、运行后,Console打印如下内容

test.xml文件中的内容更改如下

<root>
  <username>蔡徐坤</username>
  <password>jinitaimei</password>
  <fans>
    <fan name="张三" age="11" />
    <fan name="李四" age="12" />
    <fan name="吴亦凡" age="18" />
  </fans>
</root>

注意:

1、xml文件只能建立在StreamingAssets文件夹中。否则打包成exe文件时,程序就不能读取到该文件了。

2、在新建节点时使用的是XmlElement类,它其实是XmlNode的子类。XmlNode是一个抽象类,很多相关于xml解析的类都继承了这个类。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章