【Unity】(代码分析)Unity创建并保存XML

来源:互联网 发布:java面向对象的4大特征 编辑:程序博客网 时间:2024/04/29 22:52

原文地址:Unity创建并保存XML


using UnityEngine;using System.Collections;using System.IO;using System.Xml;public class XMLTest : MonoBehaviour{    void Start()    {        XmlDocument xml = CreateXML();//创建一个XML对象 赋值为 CreateXML函数 创建XML文件 的返回值        AddNodeToXML(xml, "123", "this is a xml test 111!请输入相关信息内容");//调用 AddNodeToXML函数 添加节点到XML文件        AddNodeToXML(xml, "456", "this is a xml test 222!请输入相关信息内容");        UpdateNodeToXML();//调用更新XML节点函数        SaveXML(xml);//调用存储XML函数    }    XmlDocument CreateXML()    {        //新建xml对象          XmlDocument xml = new XmlDocument();        //加入声明          xml.AppendChild(xml.CreateXmlDeclaration("1.0", "UTF-8", null));        //加入根元素          xml.AppendChild(xml.CreateElement("Root"));        return xml;    }    public void AddNodeToXML(XmlDocument xml, string titleValue, string infoValue)    {        //获取根节点          XmlNode root = xml.SelectSingleNode("Root");//选择节点        //添加元素          XmlElement element = xml.CreateElement("Node");//赋值给一个XML元素 element 为 创造“Node”节点        element.SetAttribute("Type", "string");//设置“Node”节点的 变量"Type" 为 “string”字符串类型        element.SetAttribute("Type2", "string1");//设置“Node”节点的 变量"Type" 为 “string”字符串类型        //在Node节点下添加子节点          XmlElement titleElelment = xml.CreateElement("Title");//创造“Title”节点 为“Node”节点 的子节点        titleElelment.SetAttribute("Type2", "string2");//设置“Node”节点的 变量"Type" 为 “string”字符串类型        //titleElelment.SetAttribute("Title", TitleValue); //设置“Node”节点的 变量"Title" 为 “string”字符串类型 形参"titleValue"         titleElelment.InnerText = titleValue;//使得这个形参的 文本 为 形参变量"titleValue"  的值        XmlElement infoElement = xml.CreateElement("Info");        //infoElement.SetAttribute("Info", infoValue);          infoElement.InnerText = infoValue;        element.AppendChild(titleElelment);//在"Node"节点 添加子节点为 "Title"节点        element.AppendChild(infoElement);//在"Node"节点 添加子节点为 "Info"节点        root.AppendChild(element);//在"Root"节点 添加子节点为 "Node"节点    }    public void UpdateNodeToXML()    {        string filepath = Application.dataPath + @"/INFO.XML";        if (File.Exists(filepath))        {            XmlDocument xmldoc = new XmlDocument();            xmldoc.Load(filepath);  //根据指定路径加载xml              XmlNodeList nodeList = xmldoc.SelectSingleNode("Root").ChildNodes; //Node节点                                                                                 //遍历所有子节点              foreach (XmlElement xe in nodeList)            {                //拿到节点中属性Type=“string”的节点                  if (xe.GetAttribute("Type") == "string")                {                    //更新节点属性                      xe.SetAttribute("type", "text");                    //继续遍历                      foreach (XmlElement xelement in xe.ChildNodes)                    {                        if (xelement.Name == "TitleNode")                        {                            //修改节点名称对应的数值,而上面的拿到节点连带的属性                              xelement.SetAttribute("Title", "企业简介");                              xelement.InnerText = "企业简介";                        }                    }                    break;                }            }            xmldoc.Save(filepath);//调用存储XML函数            print("Update XML OK!");        }    }    public void SaveXML(XmlDocument xml)    {        //存储xml文件  #if UNITY_EDITOR || UNITY_STANDALONE        xml.Save(Application.dataPath + "/StreamingAssets/INFO.XML");//XML文件存储的路径为 该工程路径/StreamingAssets/INFO.XML#elif UNITY_ANDROID            xml.Save(Application.persistentDataPath + "/INFO.xml");  #endif    }}















0 0
原创粉丝点击