unity 对XML文件的创建、写入、读取、更新等的操作

本案例使用unity版本:unity5.6.1f1
编程工具:VS2015

项目开发中,会使用xml作为软件的配置文件,在这里记录一下关于XML的基本操作。

本案例将XML文件创建在StreamingAssets文件夹中,若工程中不存在该文件夹请自己创建。
(保存到该文件夹,便于在项目发布时,能够将配置文件一并打包到程序中,并且不被压缩便于日后修改)
引用命名空间:
using System.IO;
using System.Xml;

XML的创建

void CreateXML() {
        localPath = UnityEngine.Application.streamingAssetsPath + "/"+"MyXML.xml";
        if (!File.Exists(localPath) ) {
            XmlDocument xml = new XmlDocument();
            XmlDeclaration xmldecl = xml.CreateXmlDeclaration("1.0", "UTF-8", "");//设置xml文件编码格式为UTF-8
            XmlElement root = xml.CreateElement("Data");//创建根节点
            XmlElement info = xml.CreateElement("Info");//创建子节点
            info.SetAttribute("Name","小王");//创建子节点属性名和属性值
            info.SetAttribute("Age","28");
            info.SetAttribute("Phone","12345678");
            root.AppendChild(info);//将子节点按照创建顺序,添加到xml
            xml.AppendChild(root);
            xml.Save(localPath);//保存xml到路径位置
            Debug.Log("创建XML成功!");
        }
    }

调用该方法,运行结果如下图:
在这里插入图片描述
创建的XML文件

<Data>
  <Info Name="小王" Age="28" Phone="12345678" />
</Data>

XML的写入

void AddXML() {
        localPath = UnityEngine.Application.streamingAssetsPath + "/" + "MyXML.xml";
        if ( File.Exists(localPath) )
        {
            XmlDocument xml = new XmlDocument();
            xml.Load(localPath);//加载xml文件
            XmlNode root = xml.SelectSingleNode("Data");//获取根节点
            XmlElement info = xml.CreateElement("Info_2");//创建新的子节点
            info.SetAttribute("Name", "小李");//创建新子节点属性名和属性值
            info.SetAttribute("Age", "25");
            info.SetAttribute("Phone", "87654321");
            root.AppendChild(info);//将子节点按照创建顺序,添加到xml
            xml.AppendChild(root);
            xml.Save(localPath);//保存xml到路径位置
            Debug.Log("添加XML成功!");
        }
    }

在创建MyXML文件后,调用 AddXML() 方法。运行结果如图下图:
在这里插入图片描述
写入后的XML文件

<Data>
  <Info Name="小王" Age="28" Phone="12345678" />
  <Info_2 Name="小李" Age="25" Phone="87654321" />
</Data>

XML的读取

 void ReadXML() {
        localPath = UnityEngine.Application.streamingAssetsPath + "/" + "MyXML.xml";
        if ( File.Exists(localPath) )
        {
            XmlDocument xml = new XmlDocument();
            xml.Load(localPath);//加载xml文件
            XmlNodeList nodeList = xml.SelectSingleNode("Data").ChildNodes;
            foreach (XmlElement xe in nodeList) {//遍历所以子节点
                if (xe.Name== "Info_2" ) {
                    Debug.Log(xe.GetAttribute("Name"));//获取Name属性值
                    Debug.Log(xe.GetAttribute("Age"));
                    Debug.Log(xe.GetAttribute("Phone"));
                }
            }                     
            Debug.Log("读取XML成功!"+xml.OuterXml);
        }
    }

在写入XML信息后,在Start()中调用ReadXML()方法。运行结果下图:
在这里插入图片描述

XML的更新

public void UpdateXml()
    {
        localPath = UnityEngine.Application.streamingAssetsPath + "/" + "MyXML.xml";
        if ( File.Exists(localPath) )
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(localPath);
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("Data").ChildNodes;
            foreach ( XmlElement xe in nodeList )
            {
                //拿到节点中属性Name =小王的节点
                if ( xe.GetAttribute("Name") == "小王" )
                {
                    //更新节点属性
                    xe.SetAttribute("Age", "21");        
                    break;
                }
            }
            xmlDoc.Save(localPath);
            Debug.Log("更新XML成功!");
        }
    }

在Start()中调用UpdateXml()方法。运行结果下图:
在这里插入图片描述
更新后的XML信息

<Data>
  <Info Name="小王" Age="21" Phone="12345678" />
  <Info_2 Name="小李" Age="25" Phone="87654321" />
</Data>

XML的删除

 public void DeleteXml()
    {
        localPath = UnityEngine.Application.streamingAssetsPath + "/" + "MyXML.xml";
        if ( File.Exists(localPath) )
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(localPath);
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("Data").ChildNodes;
            foreach ( XmlElement xe in nodeList )
            {
                if ( xe.GetAttribute("Name") == "小李" )
                {
                    xe.RemoveAttribute("Phone");
                }
                if ( xe.GetAttribute("Name") == "小王" )
                {
                    xe.RemoveAll();
                }
            }
            xmlDoc.Save(localPath);
            Debug.Log("删除XML成功!");
        }
    }

在Start()中调用DeleteXml()方法。运行结果下图:
在这里插入图片描述
删除后XML信息

<Data>
  <Info />
  <Info_2 Name="小李" Age="25" />
</Data>

以上对XML的操作基本满足项目开发的需求,本案例记录XML的基本用法和简单实例,可以根据项目需求进行灵活运用。

参考学习: 雨松MOMO 雨松MOMO程序研究院

  • 8
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值