在unity的开发中,经常会用到Xml来存储数据文件。如下我将带领大家来实现一套Xml文件的存储系统。

代码如下:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.IO;
using System.Text;public class XmlMgr : MonoBehaviour
{   void OnGUI(){if(GUI.Button(new Rect(10,10,200,30),"Create XML")){CreateXml();}if(GUI.Button(new Rect(10,50,200,30),"Update XML")){UpdateXml();}if(GUI.Button(new Rect(10,90,200,30),"Add XML")){AddXml();}if(GUI.Button(new Rect(10,130,200,30),"Delete XML")){DeleteXml();}if(GUI.Button(new Rect(10,170,200,30),"Show XML")){ShowXml();}}//创建XML文件public void CreateXml(){string filepath = Application.dataPath + @"/XmlData.xml";if(!File.Exists (filepath)){    XmlDocument xmlDoc = new XmlDocument();XmlElement root = xmlDoc.CreateElement("transforms"); XmlElement elmNew = xmlDoc.CreateElement("rotation"); elmNew.SetAttribute("id","0");elmNew.SetAttribute("name","backkom");XmlElement rotation_X = xmlDoc.CreateElement("x"); rotation_X.InnerText = "0"; XmlElement rotation_Y = xmlDoc.CreateElement("y"); rotation_Y.InnerText = "1"; XmlElement rotation_Z = xmlDoc.CreateElement("z"); rotation_Z.InnerText = "2"; rotation_Z.SetAttribute("id","1");elmNew.AppendChild(rotation_X);elmNew.AppendChild(rotation_Y);elmNew.AppendChild(rotation_Z);root.AppendChild(elmNew);xmlDoc.AppendChild(root);xmlDoc.Save(filepath); Debug.Log("createXml OK!");}}//更新XML文件public void UpdateXml(){string filepath = Application.dataPath + @"/XmlData.xml";if(File.Exists (filepath)){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(filepath);XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;foreach(XmlElement xe in nodeList){if(xe.GetAttribute("id")=="0"){xe.SetAttribute("id","2");foreach(XmlElement x1 in xe.ChildNodes){if(x1.Name=="z"){x1.InnerText="update";}}break;}}xmlDoc.Save(filepath);Debug.Log("UpdateXml OK!");}}//添加XML文件节点public void AddXml(){string filepath = Application.dataPath + @"/XmlData.xml";if(File.Exists (filepath)){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(filepath);XmlNode root = xmlDoc.SelectSingleNode("transforms");XmlElement elmNew = xmlDoc.CreateElement("rotation"); elmNew.SetAttribute("id","1");elmNew.SetAttribute("name","backkom");XmlElement rotation_X = xmlDoc.CreateElement("x"); rotation_X.InnerText = "0"; rotation_X.SetAttribute("id","1");XmlElement rotation_Y = xmlDoc.CreateElement("y"); rotation_Y.InnerText = "1"; XmlElement rotation_Z = xmlDoc.CreateElement("z"); rotation_Z.InnerText = "2"; elmNew.AppendChild(rotation_X);elmNew.AppendChild(rotation_Y);elmNew.AppendChild(rotation_Z);root.AppendChild(elmNew);xmlDoc.AppendChild(root);xmlDoc.Save(filepath); Debug.Log("AddXml OK!");}}//删除XML文件节点,属性public void DeleteXml(){string filepath = Application.dataPath + @"/XmlData.xml";if(File.Exists (filepath)){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(filepath);XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;foreach(XmlElement xe in nodeList){if(xe.GetAttribute("id")=="1"){xe.RemoveAttribute("id");}foreach(XmlElement x1 in xe.ChildNodes){if(x1.Name == "z"){x1.RemoveAll();}}}xmlDoc.Save(filepath);Debug.Log("deleteXml OK!");}}//展示XML文件public void ShowXml(){string filepath = Application.dataPath + @"/XmlData.xml";if(File.Exists (filepath)){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(filepath);XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;foreach(XmlElement xe in nodeList){Debug.Log("Attribute :" + xe.GetAttribute("name"));Debug.Log("NAME :" + xe.Name);foreach(XmlElement x1 in xe.ChildNodes){if(x1.Name == "y"){Debug.Log("VALUE :" + x1.InnerText);}}}Debug.Log(xmlDoc.OuterXml);}}
}

基于Unity3D的Xml文件的存储的实现相关推荐

  1. dom4j工具类_基于DOM4J的XML文件解析类

    XML文件解析分四类方式:DOM解析:SAX解析:JDOM解析:DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于ja ...

  2. java dom解析xml路径中文_Java如何基于DOM解析xml文件

    一.Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath 此文针对其中的DOM方法具体展开介绍及代码分析 sax.dom是两种对xml文档进行解析的方法(没有具体实 ...

  3. 基于c的xml文件解析(转)

    libxml(一) 摘要 Libxml是个有免费许可的用于处理XML.能轻松跨越多个平台的C语言库.这个指南提供他的基本函数的例子. 绪论 Libxml是个实现读.创建及操纵XML数据功能的C语言库. ...

  4. java xml 反射_Java 读取XML文件以及Java 的反射机制实现

    Java 读取XML文件以及Java 的反射机制实现 代码部分 import java.io.File; import javax.xml.parsers.DocumentBuilder; impor ...

  5. java testng 源代码_根据测试用例的java源码自动生成TestNG的XML文件

    1.读取当前项目目录下的所有.java文件,过滤出含有@Test标识的java源文件 2.读取java文件内容,解析出包名.类名.方法名.使用Vector存储,第一个元素为包名,第二个元素为类名,从第 ...

  6. c++解析xml文件_XML文件解析实践(DOM解析)

    昨天完成了基于DOM的XML文件解析类,今天赶紧实践了一下,不得不说,实践中的坑还是很多的. 本来这个项目就是为了规范各个服务在使用MySQL数据库时候的配置项,由于之前我接触的都是Java服务,对于 ...

  7. python读取txt、csv以及xml文件

    1.读取txt文件 txt文件是经常需要被操作的文件类型,python提供了以下几种常见的读取txt文件的方式: * read():              读取整个文件 * readline(): ...

  8. xml转换为mysql_如何将存储在XML文件中的数据转换为关系数据库(MySQL)?

    我有一些 XML文件包含研究项目的数据,我需要运行一些统计数据.数据量接近100GB. 结构不是那么复杂(可能映射到关系模型中的10个表),并且考虑到问题的性质,这些数据永远不会再次更新,我只需要在易 ...

  9. java spring bean配置文件_Spring基于xml文件配置Bean过程详解

    这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:be ...

最新文章

  1. 光测力学-栅线投影/面结构光技术
  2. [J2SE 基础知识]2、抽象类和接口(上)
  3. 2.14 向量化 Logistic 回归的梯度输出-深度学习-Stanford吴恩达教授
  4. C++11 std::bind 和 std::placeholder
  5. linux双网卡绑定同一IP步骤,linux系统双网卡绑定单个IP地址
  6. c语言每个整数占9列,c语言 第五章 数据类型和表达式.ppt
  7. 回调函数原理与Python实现
  8. lightgallery.js 画廊/相册插件首选!
  9. 从氨基酸到大分子(蛋白质、核酸)
  10. 免费的Access数据库员工管理系统下载-IT技术网站 企业人员管理系统源码
  11. VS注册登录不显示界面内容
  12. 基于DSP/FPGA的超高速跳频系统基带设计与实现
  13. java提取一个字符串中的整数和小数部分
  14. 仿百度文库解决方案——利用FlexPaper显示Flash(SWF)
  15. App自动化测试之企微打卡、快手刷金币
  16. 微信小程序数组更新,但视图不更新的问题
  17. SecureBoost: A Lossless Federated Learning Framework论文笔记
  18. densepose与SMPL之IUV坐标转XYZ坐标
  19. 【Excel 教程系列第 11 篇】Excel 如何快速下拉填充序列至 10000 行
  20. 互联网圈内的域名大战

热门文章

  1. 华为鸿蒙麒麟玉兔_华为鸿蒙麒麟玉兔_华为P50曝光,99屏占比海思麒麟1020鸿蒙系统,这才是华为...
  2. matlab surf 坐标设置,matlab中3D曲面函数surf的坐标问题
  3. sql中的dbl的含义
  4. php服务器能运行java吗_将PHP与Java服务器接口
  5. 求救帮忙看看飞思卡尔的代码错误
  6. arm架构 CF-WU810N网卡驱动安装经验
  7. android多个按钮美化,Android开发学习系列(一)——Android按钮圆角美化
  8. java jbutton 文字颜色_java – 如何更改JButton的文本颜色
  9. android tv盒子哪个好用,2020什么电视盒子最好?超良心的三大实用选购技巧
  10. C语言学习-调用自定义函数