【Unity 3D】C#从XML中写入、读取、修改数据(附源码)

简介: 【Unity 3D】C#从XML中写入、读取、修改数据(附源码)

XML即可标记语言,是一种用于标记电子文件使其具有结构性的标记语言,在计算机中,标记是指计算机能理解的信息符号,通过此种符号,计算机可以从处理包含各种信息的数据,可以用来标记数据、定义数据结构,是一种用户对自己的标记语言进行定义的源语言

1:写入XML数据

写入XML数据,要思考清楚节点的内容,然后把节点一层一层的添加到XML中,要注意它们之间的先后顺序,它们之间的先后顺序就是生成的XML文件的先后顺序,下面实例演示

using System.IO;
using System.Xml;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_15_5 : MonoBehaviour
{
    void Start()
    {
        CreateXML();
    }
    void CreateXML()
    {
        string path = @"c:\Temp\jsonInfo.xml";
        //创建XML实例对象
        XmlDocument xml = new XmlDocument();
        //创建根节点
        XmlElement root = xml.CreateElement("Data");
        //创建子节点
        XmlElement element = xml.CreateElement("Person");//设置子节点的名字
        element.SetAttribute("id", "1");//设置子节点的属性
        //设置节点内面的内容
        XmlElement elementChild1 = xml.CreateElement("Name");
        elementChild1.InnerText = "张三";
        XmlElement elementChild2 = xml.CreateElement("Grade");
        elementChild2.InnerText = "96";
        //将内容添加到子节点
        element.AppendChild(elementChild1);
        element.AppendChild(elementChild2);
        //将子节点添加到根节点
        root.AppendChild(element);
        //创建子节点
        XmlElement element2 = xml.CreateElement("Person");//设置子节点的名字
        element2.SetAttribute("id", "2");//设置子节点的属性
        //设置节点内面的内容
        XmlElement elementChild3 = xml.CreateElement("Name");
        elementChild3.InnerText = "李四";
        XmlElement elementChild4 = xml.CreateElement("Grade");
        elementChild4.InnerText = "98";
        //将内容添加到子节点
        element2.AppendChild(elementChild3);
        element2.AppendChild(elementChild4);
        //将子节点添加到根节点
        root.AppendChild(element2);
        //将根节点添加到XML实例对象中
        xml.AppendChild(root);
        //最后保存文件
        xml.Save(path);
    }
}

2:读取XML数据

读取XML数据,也是根据节点一层一层的读取数据,如生成的XML文件,最外层是Data,就要先读取Data,然后以Data为根节点读取子节点Person,然后根据子节点Person读取下一层节点的数据。

using System.IO;
using System.Xml;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_15_6 : MonoBehaviour
{
    void Start()
    {
        ReadXML();
    }
    //读取XML
    void ReadXML()
    {
        //创建xml文档
        XmlDocument xml = new XmlDocument();
        xml.Load(@"c:\Temp\jsonInfo.xml");
        //得到Data节点下的所有子节点
        XmlNodeList xmlNodeList = xml.SelectSingleNode("Data").ChildNodes;
        //遍历所有子节点
        foreach (XmlElement item in xmlNodeList)
        {
            if (item.GetAttribute("id") == "1")
            {
                //继续遍历id为1的节点下的子节点
                foreach (XmlElement itemChild in item.ChildNodes)
                {
                    if (itemChild.Name == "Name")
                    {
                        Debug.Log(itemChild.InnerText);
                    }
                    else if (itemChild.Name == "Grade")
                    {
                        Debug.Log(itemChild.InnerText);
                    }
                }
            }
            if (item.GetAttribute("id") == "2")
            {
                //继续遍历id为2的节点下的子节点
                foreach (XmlElement itemChild in item.ChildNodes)
                {
                    if (itemChild.Name == "Name")
                    {
                        Debug.Log(itemChild.InnerText);
                    }
                    else if (itemChild.Name == "Grade")
                    {
                        Debug.Log(itemChild.InnerText);
                    }
                }
            }
        }
    }
}

3:修改XML数据

修改XML数据也是同样的道理,需要根据节点一层一层的找到数据,然后进行修改,下面的实例演示了如何修改XML数据

using System.IO;
using System.Xml;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_15_7 : MonoBehaviour
{
    void Start()
    {
        UpdateXML();
    }
    //修改XML
    void UpdateXML()
    {
        string path = @"c:\Temp\jsonInfo.xml";
        if (File.Exists(path))
        {
            XmlDocument xml = new XmlDocument();
            xml.Load(path);
            XmlNodeList xmlNodeList = xml.SelectSingleNode("Data").ChildNodes;
            foreach (XmlElement item in xmlNodeList)
            {
                if (item.GetAttribute("id") == "1")
                {
                    //把Person里id为1的属性改为5
                    item.SetAttribute("id", "5");
                }
                if (item.GetAttribute("id") == "2")
                {
                    foreach (XmlElement itemChild in item.ChildNodes)
                    {
                        if (itemChild.Name == "Name")
                        {
                            itemChild.InnerText = "王五";
                        }
                        else if (itemChild.Name == "Grade")
                        {
                            itemChild.InnerText = "0";
                        }
                    }
                }
            }
            xml.Save(path);
        }
    }
}

编译和执行代码后,xml中对应的内容将会改变

相关文章
|
2月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
178 61
C# 中的 XML 与 JSON 数据处理
|
1月前
|
SQL 缓存 分布式计算
C#如何处理上亿级数据的查询效率
C#如何处理上亿级数据的查询效率
22 1
|
1月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
79 0
|
1月前
|
中间件 数据库连接 API
C#数据分表核心代码
C#数据分表核心代码
35 0
|
2月前
|
存储 C# 开发者
枚举与结构体的应用:C#中的数据组织艺术
在C#编程中,枚举(`enum`)和结构体(`struct`)是非常重要的数据类型。枚举用于定义命名常量集合,提高代码可读性;结构体则封装相关数据字段,适合小型数据集。本文从基本概念入手,探讨它们的使用技巧、常见问题及解决方案,帮助开发者更好地利用这些特性构建健壮的应用程序。
41 8
|
1月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
89 0
|
1月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
358 0
|
3月前
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
78 0
|
3月前
|
C# 图形学 数据安全/隐私保护
Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
|
3月前
|
开发框架 .NET C#
WPF/C#:显示分组数据的两种方式
WPF/C#:显示分组数据的两种方式
58 0