unity使用Xml文档 的操作

前端之家收集整理的这篇文章主要介绍了unity使用Xml文档 的操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在开发中,我们经常有遇到要处理大量字符串的情况,这时候XML就起到了非常重要的作用。C#中是如何处理XML的呢,下面我们通过一些简单的例子代码去认识了解一下。

@H_502_3@

XML的读取:

这里我随便弄了个xml(不好意思,真的 是很随便的。。。。)。

代码如下:

首先要导入using

using System.Xml;

using System.IO;

private ArrayList Adialogue=new ArrayList();
private ArrayList Bdialogue=new ArrayList();

void LoadXml()@H_502_3@ {@H_502_3@ //创建xml文档@H_502_3@ XmlDocument xml = new XmlDocument();@H_502_3@ XmlReaderSettings set = new XmlReaderSettings();@H_502_3@ set.IgnoreComments = true;//这个设置是忽略xml注释文档的影响。有时候注释会影响到xml的读取@H_502_3@ xml.Load(XmlReader.Create((Application.dataPath+"/data.xml"),set));@H_502_3@ //得到objects节点下的所有子节点@H_502_3@ XmlNodeList xmlNodeList = xml.SelectSingleNode("objects").ChildNodes;@H_502_3@ //遍历所有子节点@H_502_3@ foreach(XmlElement xl1 in xmlNodeList)@H_502_3@ {@H_502_3@ @H_502_3@ if(xl1.GetAttribute("id")=="1")@H_502_3@ {@H_502_3@ //继续遍历id为1的节点下的子节点@H_502_3@ foreach(XmlElement xl2 in xl1.ChildNodes)@H_502_3@ {@H_502_3@ //放到一个textlist文本里@H_502_3@ textList.Add(xl2.GetAttribute("name") + ": " + xl2.InnerText);@H_502_3@ //得到name为a的节点里的内容。放到TextList里@H_502_3@ if (xl2.GetAttribute("name") == "a")@H_502_3@ {@H_502_3@ Adialogue.Add(xl2.GetAttribute("name") + ": " + xl2.InnerText);@H_502_3@ }@H_502_3@ //得到name为b的节点里的内容。放到TextList里@H_502_3@ else if (xl2.GetAttribute("name") == "b")@H_502_3@ {@H_502_3@ Bdialogue.Add(xl2.GetAttribute("name") + ": " + xl2.InnerText);@H_502_3@ }@H_502_3@ }@H_502_3@ }@H_502_3@ }@H_502_3@ print(xml.OuterXml);@H_502_3@ @H_502_3@ }

代码有注释,我就不多说了。看效果吧,可以看到里面的内容已经被读取出来

2、修改MXL

直接上代码了。

void updateXML()@H_502_3@ {@H_502_3@ string path = Application.dataPath + "/data.xml";@H_502_3@ if(File.Exists(path))@H_502_3@ {@H_502_3@ XmlDocument xml = new XmlDocument();@H_502_3@ xml.Load(path);@H_502_3@ XmlNodeList xmlNodeList = xml.SelectSingleNode("objects").ChildNodes;@H_502_3@ foreach(XmlElement xl1 in xmlNodeList)@H_502_3@ {@H_502_3@ if(xl1.GetAttribute("id")=="1")@H_502_3@ {@H_502_3@ //把messages里id为1的属性改为5@H_502_3@ xl1.SetAttribute("id","5");@H_502_3@ }@H_502_3@ @H_502_3@ if (xl1.GetAttribute("id") =="2")@H_502_3@ {@H_502_3@ foreach(XmlElement xl2 in xl1.ChildNodes)@H_502_3@ {@H_502_3@ if(xl2.GetAttribute("map")=="abc")@H_502_3@ {@H_502_3@ //把mission里map为abc的属性改为df,并修改其里面的内容@H_502_3@ xl2.SetAttribute("map","df");@H_502_3@ xl2.InnerText = "我成功改变了你";@H_502_3@ }@H_502_3@ @H_502_3@ }@H_502_3@ }@H_502_3@ }@H_502_3@ xml.Save(path);@H_502_3@ }@H_502_3@ }

修改完后的xml如下,可以对比下前面的,已经改了

3、现在到创建xml了。还是直接上代码

void CreateXML()@H_502_3@ {@H_502_3@ string path = Application.dataPath + "/data2.xml";@H_502_3@ if(!File.Exists(path))@H_502_3@ {@H_502_3@ //创建最上一层的节点。@H_502_3@ XmlDocument xml = new XmlDocument();@H_502_3@ //创建最上一层的节点。@H_502_3@ XmlElement root = xml.CreateElement("objects");@H_502_3@ //创建子节点@H_502_3@ XmlElement element = xml.CreateElement("messages");@H_502_3@ //设置节点的属性@H_502_3@ element.SetAttribute("id","1");@H_502_3@ XmlElement elementChild1 = xml.CreateElement("contents");@H_502_3@ @H_502_3@ elementChild1.SetAttribute("name","a");@H_502_3@ //设置节点内面的内容@H_502_3@ elementChild1.InnerText = "这就是你,你就是天狼";@H_502_3@ XmlElement elementChild2 = xml.CreateElement("mission");@H_502_3@ elementChild2.SetAttribute("map","abc");@H_502_3@ elementChild2.InnerText = "去吧,少年,去实现你的梦想";@H_502_3@ //把节点一层一层的添加至xml中,注意他们之间的先后顺序,这是生成XML文件的顺序@H_502_3@ element.AppendChild(elementChild1);@H_502_3@ element.AppendChild(elementChild2);@H_502_3@ @H_502_3@ root.AppendChild(element);@H_502_3@ @H_502_3@ xml.AppendChild(root);@H_502_3@ //最后保存文件@H_502_3@ xml.Save(path);@H_502_3@ }@H_502_3@ }

又到了看效果的时候了。我们可以看到在assets的目录下多了一个data2.xml文件。(可能出现的有点慢,unity来不及刷新,大家可以到文件夹里看下。)

4、那如果要添加xml又如何去操作呢?其实和创建xml是差不多的,只是前面几句不一样而已。

void addXMLData()@H_502_3@ {@H_502_3@ string path = Application.dataPath + "/data2.xml";@H_502_3@ if(File.Exists(path))@H_502_3@ {@H_502_3@ XmlDocument xml = new XmlDocument();@H_502_3@ xml.Load(path);@H_502_3@ XmlNode root = xml.SelectSingleNode("objects");@H_502_3@ //下面的东西就跟上面创建xml元素是一样的。我们把他复制过来就行了@H_502_3@ XmlElement element = xml.CreateElement("messages");@H_502_3@ 502_3@ XmlElement elementChild1 = xml.CreateElement("contents");@H_502_3@ @H_502_3@ elementChild1.SetAttribute("name","b");@H_502_3@ //设置节点内面的内容@H_502_3@ elementChild1.InnerText = "天狼,你的梦想就是。。。。。";@H_502_3@ XmlElement elementChild2 = xml.CreateElement("mission");@H_502_3@ elementChild2.SetAttribute("map","def");@H_502_3@ elementChild2.InnerText = "我要妹子。。。。。。。。。。";@H_502_3@ //最后保存文件@H_502_3@ xml.Save(path);@H_502_3@ }@H_502_3@ }

效果如下。

猜你在找的XML相关文章