本节内容是我刚学xml所写,不足的地方欢迎提出
XML是指可扩展标记语言,是一种标记语言,类似HTML, 他的设计宗旨是传输数据,而非显示数据
Xml结构
说了这么多,相信大家已经知道怎么手动写XML文件了吧
下面我们先进行手动编写xml文档,这是我给大家的一个实例,我们一起来写
MAC系统,随便找个文档,保存时改下后缀.xml,然后保存就是一个xml文档
大家也可以在Monon中写,具体方法你们可以自己百度下,这里就不做过多介绍
将该文夹直接拖进unity工程中
<? version="1.0" encoding="UTF-8"?><!--处理指令<?开头【声明】-->
<!--创建一个cube信息-->
<Transform name="MyCube" tag="CubeTag">
<Position>
<X>11</X>
<Y>89</Y>
<Z>20</Z>
</Position>
</Transform>
比较懒只写了一个属性,大家记得要都敲完,多联系几遍
前面都是开胃的,下面才是主体
在unity引擎中如何生成本地XML数据
第一步:引用C#的命名空间System.Xml
第二步:生成xml文档
第三步:生成根元素 添加给文档对象
第四步:循环生成子元素添加给父元素
第五步:将生成的XML文档保存
首先先建立一个C#脚本(脚本名字随便起)建立一个空对象,将脚本挂到空对象上
//引入xml命名空间
using System .Xml;
//创建一个xml文档
XmlDocument doc = new XmlDocument();
// Use this for initialization
void Start () { 、
CreatXml();
}
void CreatXml() {
//创建一个声明
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
//将声明拼接到文档中
doc.AppendChild(dec);
//创建一个根元素节点
XmlNode rootNode = doc.CreateNode(XmlNodeType.Element, "Transform", null);
//对这个根元素添加属性
XmlAttribute attr = doc.CreateAttribute("name");
//给属性赋值
attr.Value = "YourCube";
//将刚刚创建的属性放到根元素节点标签中去
rootNode.Attributes.SetNamedItem(attr);
//拼接到xml文档中
doc.AppendChild(rootNode);
//创建一个子元素添加到根元素节点中
XmlElement pos = doc.CreateElement("Position");
XmlElement pos_X = doc.CreateElement("x");
XmlElement pos_Y = doc.CreateElement("y");
XmlElement pos_Z = doc.CreateElement("z");
pos_X.InnerText = "45";
pos_Y.InnerText = "54";
pos_Z.InnerText = "14";
pos.AppendChild(pos_X);
pos.AppendChild(pos_Y);
pos.AppendChild(pos_Z);
//拼接到根节点里
rootNode.AppendChild(pos);
//记得保存文档
doc.Save(Application.dataPath + "/MonoCodeXML.xml"); }
写完之后,保存一下,,回到unity中运行unity
然后你会发现毛都没有,为啥呀??我们停止运行unity后,刷新一下就会出来,怎么刷新呐??
在Project空白处右键找到Refresh点一下(刷新)
下面我们开始解析xml文档
还是在刚才的脚本中
在添加一个方法,记得在start中调用AnalyzeXML();
//解析xml文档
void AnalyzeXML() {
//拿到文档[用xml文档实例去加载这个文档]
doc.Load(Application .dataPath + "/MonoCodeXML.xml");
//根据文档的数据结构来分析如何获取想要的数据
//拿到根节点
XmlElement root = doc.DocumentElement;
print(root .Name );
//root.FirstChild就是这一层下面的第一个子元素节点
// XmlNode pos_x = root.FirstChild.FirstChild;
//X 子节点中的存储的数据内容
// string pos_x_string = pos_x.InnerText;
// print(pos_x_string );
//或者通过层级路径拿到这个节点的内容
XmlNode pos_x = root.SelectSingleNode("/Transform/Position");
print(pos_x.InnerText);
完事了!!!!
完事了!!!!
完事了!!!!
重要的事情说三遍