最近项目中使用到读取XML数据来初始化游戏物体,试过了.Net的XML解析功能,然后就想Mono会不会有类似的解析工具。最后在国外的网站上找到了一个解决办法。本人通过试验,找到如下的方法来解析XML文件。以下是一个例子:
1、XML文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Rootxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Row>
<Level>1</Level>
<Coin>2323</Coin>
<Exp>432</Exp>
</Row>
<Row>
<Level>2</Level>
<Coin>2342</Coin>
<Exp>4444</Exp>
</Row>
...
...
</Root><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
把这个XML文件(假定文件名为data.xml)放到Unity3D项目的任意Resources目录下,使用过如下脚本来访问(以查询Level为2的数据项为例):
<pre name="code" class="html"><pre name="code" class="html">using System.IO;
using Mono.Xml;
void ReadXML()
{
SecurityParser SP = new SecurityParser();
SP.LoadXml(Resources.Load("data").ToString());
System.Security.SecurityElement SE = SP.ToXml();
foreach (System.Security.SecurityElement childin SE.Children)
{
if (int.Parse(child.SearchForChildByTag("Level").Text) == 2)
{
coin = int.Parse(child.SearchForChildByTag("Coin").Text);
exp = int.Parse(child.SearchForChildByTag("Exp").Text);
Debug.Log("level:2\t" +"\texpNum:" + exp +"\tcoinNum:" + coin);
break;
}
}
}
调用ReadXML()就可以完成任务。
添加一句,话说使用Mono的XML可以减少对System库的引用,在输出到移动设备时可以减少内存的占用哦。其实这才是这个东东的最大意义。
PS:Mono.xml可以在 http://download.csdn.net/detail/reipeng/5107900 下载。直接放到Unity3d项目中就可用了。