Unity中解析xml文档的简单用法

创建Xml文件

首先,在unity项目中的根目录中创建一个xml文档,例如起名叫item.xml。再创建一个脚本,起名为XmlTest。如图所示:

在item.xml文档中写入以下内容:

<item>
    <item1>
      <id>1</id>
      <name>china</name>
      <year>2016</year>
   </item1>
   <item2>
     <id>2</id>
     <name>usa</name>
     <year>2017</year>
   </item2>
</item>

写入代码

在脚本里添加以下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
using System.IO;
public class XmlTest : MonoBehaviour {
       
       void Start () {
        string path = Application.dataPath + "/item.xml";
        XmlDocument document=new XmlDocument();//XmlDocument是专门用来解析xml文档的
        document.Load(path);//将指定路径的xml文件给document来解析
        XmlNode node = document.FirstChild;//FirstChild用来获取xml中的第一个节点,也就是根节点
        Debug.Log(node.Name);
        XmlNodeList xmlNodeList = node.ChildNodes;//获取根节点下的所有子节点
        foreach (XmlNode item in xmlNodeList) //遍历这些子节点的集合,进行判断
        {
            if (item.Name == "item1")
            {
                foreach (XmlNode n in item.ChildNodes)
                {
                    if (n.Name == "id")
                    {
                        Debug.Log(n.InnerText);//InnerText可以获取节点中的文本
                    }
                    if(n.Name== "name")
                    {
                        Debug.Log(n.InnerText);
                    }
                    if(n.Name== "year")
                    {
                        Debug.Log(n.InnerText);
                    }
                }
            }
            else if(item.Name == "item2")
            {
                foreach (XmlNode n in item.ChildNodes)
                {
                    if (n.Name == "id")
                    {
                        Debug.Log(n.InnerText);
                    }
                    if (n.Name == "name")
                    {
                        Debug.Log(n.InnerText);
                    }
                    if (n.Name == "year")
                    {
                        Debug.Log(n.InnerText);
                    }
                }
            }
        }
       }
       
       
       void Update () {
              
       }
}

测试

将脚本挂在相机下,运行后会打印以下内容:
(第一个打印的是根节点item的名字,后面分别打印的是item下的每个子节点(也就是item1和item2)下面的子节点的文本内容)