关于Unity读取XML的简单学习

来源:互联网 发布:剑网3捏脸数据详细 编辑:程序博客网 时间:2024/05/17 23:16

本文转自 宣雨松 的博客   http://www.xuanyusong.com/archives/1901



using UnityEngine;using System.Collections;using System.Collections.Generic;using System.Xml;using System.IO;using System.Text;public class MyXML : MonoBehaviour {    public void CreatXml()    {        //保存XML的路径,注意路径        string filePath = Application.dataPath + @"/";        //判断当前路径下是否有该文件        if (!File.Exists(filePath))        {            //创建XML文档实例            XmlDocument xmlDoc = new XmlDocument();            //创建root节点,也就是最上层节点            XmlElement root = xmlDoc.CreateElement("transforms");            //继续创建下一个节点            XmlElement elmNew = xmlDoc.CreateElement("rotation");            //设置节点的两个参数 ID和NAME            elmNew.SetAttribute("id", "0");            elmNew.SetAttribute("name", "eagle");            //继续创建下一层节点            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");            //把节点一层层的添加至xmlDoc中,它们之间的先后顺序,这个就是生成XML文件的顺序            elmNew.AppendChild(rotation_X);            elmNew.AppendChild(rotation_Y);            elmNew.AppendChild(rotation_Z);            root.AppendChild(elmNew);            xmlDoc.AppendChild (root);            //把XML保存至路径文件中            xmlDoc.Save(filePath);            Debug.Log("成功创建");        }    }    public void UpdateXml()    {        string filePath = Application.dataPath + @"/";        if (File.Exists(filePath))        {            XmlDocument xmlDoc = new XmlDocument();            //根据路径把XML文件读出来            xmlDoc.Load(filePath);            //得到transform下的所有节点            XmlNodeList nodeList = xmlDoc.SelectSingleNode("transform").ChildNodes;            //遍历所有子节点            foreach (XmlElement  xe in nodeList )            {                //拿到节点中属性ID=0的节点                if (xe.GetAttribute("id") == "0")                {                    //更新节点属性                    xe.SetAttribute("id", "1000");                    //继续遍历                    foreach (XmlElement  xl in xe.ChildNodes )                    {                        if (xl.Name == "z")                            xl.InnerText = "update0000"; //这里是修改节点名称对应的数值,而上面的拿到节点连带的属性。                    }                    break;                }            }            xmlDoc.Save(filePath);            Debug.Log("完成更新");        }    }    public void AddXml()    {        string filepath = Application.dataPath + @"/";        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", "赖张殷");            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("加载完成");        }    }    public void DeleteXml()    {        string filePath = Application.dataPath + @"/";        if (File.Exists(filePath))        {            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(filePath);            XmlNodeList nodeList = xmlDoc.SelectSingleNode("transform").ChildNodes;            foreach (XmlElement  xe in nodeList )            {                if (xe.GetAttribute("id") == "1")                {                    xe.RemoveAttribute("id");                }                foreach (XmlElement  xl in xe.ChildNodes )                {                    if (xl.Name == "z")                        xl.RemoveAll();                }            }            xmlDoc.Save(filePath);            Debug.Log("完成删除");        }    }    public void ShowXml()    {        string filePath = Application.dataPath + @"/";        if (File.Exists(filePath))        {            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(filePath);            XmlNodeList nodeList = xmlDoc.SelectSingleNode("transform").ChildNodes;            //遍历每一个节点,拿节点的属性以及节点的内容            foreach (XmlElement  xe in nodeList )            {                Debug.Log("Attribute" + xe.GetAttribute("name"));                Debug.Log("NAME" + xe.Name);                foreach (XmlElement  xl in xe.ChildNodes )                {                    if (xl.Name == "y")                        Debug.Log("VALUE:" + xl.InnerText);                }            }            Debug.Log("ALL=" + xmlDoc.OuterXml);        }    }}


0 0
原创粉丝点击