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解析的類都繼承了這個類。

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