【Unity】使用XML进行数据读存的简单例子

//解析Xml方法一

//被读取文件

<?xml version = "1.0" encoding="utf-8"?>

<root>

<heros>

<hero id = "1">

<name>超人</name>

<age>35</age>

</hero>

<hero>

<name>蝙蝠侠</name>

<age>37</age>

</hero>

<hero id = "3">

<name>闪电侠</name>

<age>20</age>

</hero>

</heros>

</root>

void ParseXML1()

{

//读取文件

XmlDocument xmlDocument = new XmlDocument();

xmlDocument.Load(Application.dataPath + "/XML/test.xml");

XmlElement rootElement = xmlDocument.LastChild as XmlElement;//获取root节点

XmlElement herosElement = rootElement.FirstChild as XmlElement;//获取heros节点

foreach(XmlElement heroElement in herosElement)

{

string id = heroElement.GetAttribute("id");//获取id属性

string name = heroElement.ChildNodes0.InnerText;

int age = int.Parse(heroElement.ChildNodes1.InnerText);

Debug.Log(id + " " + name + " " + age);//1 超人 35 蝙蝠侠 37 3 闪电侠 20

}

}

//解析Xml方法二(XPath)

void ParseXML2()

{

XmlDocument xmlDocument = new XmlDocument();//读取文件

xmlDocument.Load(Application.dataPath + "/XML/test.xml");

/*

* XPath语法:

/root/heros/hero/name 访问name节点

//name 相对路径

//heros/hero2/name 获取第二个hero节点

//heros/herolast() - 1 获取倒数第二个hero节点

//heros/heroposition() \< 3/name 获取前两个节点

//heros/hero@id = 3/name 获取hero节点中id=3的节点下的name节点

*/

XmlNodeList list = xmlDocument.SelectNodes("//heros/heroposition() \< 3");//获取所有符合要求的节点的列表

foreach(XmlElement element in list)

{

Debug.Log(element.InnerText);//超人35 蝙蝠侠37

}

}

//创建XML

/*

<?xml version="1.0" encoding="utf-8"?>

<root>

<heros>

<hero id1="0" id2="0">

<name>超人</name>

<age>20</age>

</hero>

<hero id1="1" id2="1">

<name>蝙蝠侠</name>

<age>27</age>

</hero>

<hero id1="2" id2="2">

<name>闪电侠</name>

<age>23</age>

</hero>

</heros>

</root>

*/

void CreateXML()

{

XmlDocument xmlDocument = new XmlDocument();//创建Xml文件

XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", "utf-8", "");//创建文档声明

xmlDocument.AppendChild(xmlDeclaration);

XmlElement rootElement = xmlDocument.CreateElement("root");//创建root节点

xmlDocument.AppendChild(rootElement);

XmlElement herosElement = xmlDocument.CreateElement("heros");

rootElement.AppendChild(herosElement);

//循环数据

string\[\] names = new string\[\] { "超人", "蝙蝠侠", "闪电侠" };

int\[\] ages = new int\[\] { 20, 27, 23 };

for(int i = 0; i < 3; i ++)

{

XmlElement heroElement = xmlDocument.CreateElement("hero");//创建hero节点

heroElement.SetAttribute("id1", i + "");//设置属性值方法一

//设置属性值方法二

XmlAttribute xmlAttribute = xmlDocument.CreateAttribute("id2");//设置节点属性值

xmlAttribute.Value = i + "";//设置属性值

heroElement.Attributes.Append(xmlAttribute);

XmlElement nameElement = xmlDocument.CreateElement("name");//创建name节点

nameElement.InnerText = namesi;

heroElement.AppendChild(nameElement);

XmlElement ageElement = xmlDocument.CreateElement("age");//创建age节点

ageElement.InnerText = agesi.ToString();

heroElement.AppendChild(ageElement);

herosElement.AppendChild(heroElement);

}

xmlDocument.Save(Application.dataPath + "/XML/test2.xml");//保存文件

}

相关推荐
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹2 天前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
SmalBox2 天前
02-07-原理篇-文件系统与跨平台适配
unity3d·游戏开发
只睡四小时2 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
kybs19912 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
魔士于安3 天前
unity 丑陋哥布林 哥布林有humannoid 动画没 带动画
unity·游戏引擎·材质·贴图·模型
Polevne3 天前
C# SFTP客户端实现文件传输
c#·ssh
samble3 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
cjp5603 天前
024 . WPF MVVM类封装优化
c#
小贺儿开发3 天前
Unity 家居视频遥控(细节优化)
科技·unity·程序员·udp·视频·工具·通信