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解析的类都继承了这个类。