【Unity】XML文件的解析和生成

目录

使用XPath路径语法解析

使用xml语法解析

XML文件的生成


XML文件是一种常用的数据交换格式,它以文本形式存储数据,并使用标签来描述数据。解析和生成XML文件是软件开发中常见的任务。

解析XML文件是指从XML文件中读取数据的过程。在.NET中,可以使用XmlDocument类来解析XML文件。下面介绍两种方法来解析XML文件。

  • 我们使用XmlDocument类加载XML文件,并使用XPath表达式选择需要读取的节点。然后,我们可以使用Attributes属性获取节点的属性,并使用InnerText属性获取节点的文本内容。
  • 如果节点包含子节点,可以使用ChildNodes属性获取子节点的集合,并使用相同的方法获取子节点的属性或文本内容。

使用XPath路径语法解析

cs 复制代码
        //2、使用XPath语法解析 路径
        //创建xml对象
        XmlDocument xml = new XmlDocument();
        //读取xml文件
        xml.Load(Application.dataPath + "/Hokag.xml");

        // 使用XPath语法解析路径,获取所有名为"HokagInfor"的元素  
        // SelectNodes方法返回一个XmlNodeList对象,该对象包含所有匹配的元素
        XmlNodeList nodeList = xml.SelectNodes("Hokags/HokagInfor");

        // 对获取到的每个"HokagInfor"元素进行操作 
        foreach (XmlElement item in nodeList)
        {
            Hokag hokag = new Hokag();
            //获取特性
            string id = item.GetAttribute("id");
            //获取子节点的值
            hokag.Name = item.ChildNodes[0].InnerText;
            hokag.Age = Int32.Parse(item.ChildNodes[1].InnerText);
            hokag.Skill = item.ChildNodes[2].InnerText;
            Debug.Log(id + ": " + hokag);
        }

使用xml语法解析

cs 复制代码
        //1、使用xml语法解析
        //创建xml对象
        XmlDocument xml = new XmlDocument();
        //读取xml文件
        xml.Load(Application.dataPath + "/Hokag.xml");
        //获取根节点
        XmlNode root = xml.LastChild;
        //获取根节点的子节点
        XmlNodeList nodeList = root.ChildNodes;


        foreach (XmlElement item in nodeList)
        {
            Hokag hokag = new Hokag();
            //获取特性
            string id = item.GetAttribute("id");
            //获取子节点的值
            hokag.Name = item.ChildNodes[0].InnerText;
            hokag.Age = Int32.Parse(item.ChildNodes[1].InnerText);
            hokag.Skill = item.ChildNodes[2].InnerText;
            Debug.Log(id + ": " + hokag);
        }

解析完成

XML文件的生成

生成XML文件是指将数据以XML格式写入文件的过程。在.NET中,可以使用XmlDocument类来生成XML文件。

使用XmlDocument类创建一个空的XML文档。然后,我们使用CreateElement方法创建需要添加到XML文档中的元素,并使用SetAttribute方法为元素添加属性。如果需要添加子节点,可以使用AppendChild方法将子节点添加到父节点中。最后,我们使用Save方法将XML文档保存到文件中。

cs 复制代码
  //3.生成xml
  //创建xml对象
  XmlDocument xml = new XmlDocument();
  //创建声明
  xml.AppendChild(xml.CreateXmlDeclaration("1.0", "UTF-8", null));
  //创建根节点
  XmlNode root = xml.CreateElement("Hokags");
  //设置根节点
  xml.SelectSingleNode(root.ToString());
  //添加
  xml.AppendChild(root);

  //创建根节点的子节点
  XmlElement hokagInfor = xml.CreateElement("HokagInfor");
  hokagInfor.SetAttribute("id", "1");
  //创建子节点
  XmlElement nameElement = xml.CreateElement("Name");
  XmlElement ageElement = xml.CreateElement("age");
  XmlElement skillElement = xml.CreateElement("Skill");
  nameElement.InnerText = "漩涡鸣人";
  ageElement.InnerText = "20";
  skillElement.InnerText = "嘴遁";

  hokagInfor.AppendChild(nameElement);
  hokagInfor.AppendChild(ageElement);
  hokagInfor.AppendChild(skillElement);

  root.AppendChild(hokagInfor);

  //文件保存
  xml.Save(Application.dataPath + "/HokagInformation.xml");

生成完成

相关推荐
wuguan_几秒前
C#文件读取
开发语言·c#·数据读写
hoiii1871 分钟前
基于C#的PLC串口通信实现
开发语言·c#·plc
神仙别闹5 分钟前
基于 SeetaFace+VS2017+Qt 的人脸识别
开发语言·qt
电商API_180079052476 分钟前
进阶篇:电商商品评论情感分析 + 关键词挖掘(Python NLP 实战)
大数据·开发语言·网络·数据库·人工智能
chao18984412 分钟前
基于MATLAB的ADI方法求解偏微分方程详解
开发语言·算法·matlab
AAA阿giao16 分钟前
拼乐高式开发:深入剖析 React 组件通信、弹窗设计与样式管理
开发语言·前端·javascript·react.js·前端框架·props·components
apihz16 分钟前
免费手机号归属地查询API接口详细教程
android·java·运维·服务器·开发语言
回吐泡泡oO18 分钟前
找不到rar.RarArchiveInputStream?JAVA解压RAR5的方案。
java·开发语言
JienDa20 分钟前
PHP 静态分析工具实战:PHPStan 和 Psalm 完全指南
开发语言·php
XXYBMOOO21 分钟前
Qt 调用 DLL 实现固件升级进度弹窗(完整实战案例)
开发语言·qt·性能优化·简单工厂模式