【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 小时前
MyBatis XML 开发实战:从配置到 CRUD 全解析
xml·java·mybatis
mxwin10 小时前
Unity Shader 光线追踪原理与实战案例
unity·游戏引擎
应用市场14 小时前
不用一张图片的像素小游戏:小人是字符串,房间是矩形,平衡靠两千个假玩家
android·kotlin·游戏开发
samble14 小时前
从零搭建灌装监控系统(十九):单元测试实战,xUnit + 内存SQLite + 反射测试私有方法
c#·wpf·mvvm·modbus·工业控制
人道领域17 小时前
【面试八股速通篇01】锁与并发工具
java·开发语言·面试·c#
宇卿.17 小时前
C#字段、属性、索引器、常量
开发语言·计算机视觉·c#
程序员Linc18 小时前
ONNXOCRSharp 开源手记 02|v0.4.0 PDF识别
开发语言·pdf·c#·ocr·onnxocrsharp
芦芭荞18 小时前
QT使用xml模版生成word文档
xml·qt·word
地狱为王18 小时前
Unity使用DPDFNet实现实时语音增强(降噪)
unity·语音增强·降噪·dpdfnet
慧都小妮子18 小时前
MSG 附件太占内存?Aspose.Email for .NET 26.9 延迟加载
c#·.net·aspose·内存优化·延迟加载·aspose.email·附件内存