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

目录

使用XPath路径语法解析

使用xml语法解析

XML文件的生成


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

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

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

使用XPath路径语法解析

        //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语法解析

        //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文档保存到文件中。

  //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");

 生成完成

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/157398.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【前端】vue3+typescript+vite+Element-Plus搭建配置初始化项目结构

给自己一个目标,然后坚持一段时间,总会有收获和感悟! 对于我们开发人员,了解和熟悉新知识,对于vue3,博主是通过TA的基本结构开始,vue2和vue3都有javascript前端编程语言,到了vue3新增…

Find My数据线|苹果Find My技术与数据线结合,智能防丢,全球定位

数据线是用来连接移动设备和电脑的,来达到数据传递或通信目的。通俗点说,就是连接电脑与移动设备用来传送视频、铃声、图片等文件的通路工具。现在,随着电子行业日新月异的发展,数据线已经成为了我们生活中不可或缺的部分&#xf…

SpringBoot+Vue3+MySQL集群 开发健康体检双系统

第1章 课程介绍 试看4 节 | 38分钟 观看项目演示,熟悉大健康体检项目主要功能。掌握学习本课程的最佳方法,以及如何利用在线手册学习和答疑。 收起列表 视频: 1-1 导学 (22:46) 试看 视频: 1-2 学习方法注意事项 (07:46) 视频&am…

HTTP HTTPS 独特的魅力

目录 HTTP协议 HTTP协议的工作过程 首行 请求头(header) HOST Content-Length​编辑 User-Agent(简称UA) Referer Cookie 空行 正文(body) HTTP响应详解 状态码 报文格式 HTTP响应格式 如何…

vue-数据双向绑定原理

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-数据双向绑定原理 目录 虚拟DOM与Diff算法 1. 对虚拟DOM的理解? 2. 虚拟DOM的解…

如何使用选择工具

快捷键:V 你可以单击选择也可以框选多个! shift:加选 移动播放指示器 这根蓝色的线角:播放指示器 按←/→可以以按一下一帧的速度移动播放指示器 按←/→加shift可以以按一下五帧的速度移动播放指示器 按↑/↓可以让播放指…

【广州华锐互动】消防安全宣传知识3D交互展示提升公众学习沉浸感

随着科技的快速发展,我们的生活与工作环境愈发复杂,火灾风险也随之提高。为了提高公众的消防灭火能力,普及消防安全知识,广州华锐互动开发了消防安全宣传知识3D交互展示系统。 这是一种全新的教育方式,它利用3D技术&am…

淘宝商家私信脚本,自动批量阿里旺旺版,按键精灵源码分享

在UI界面设置话术后用#号分割多条,然后启动就会自动给搜素下面的商家发送指定消息的私信,脚本代码和UI界面代码我下面会分享出来,自己粘贴就可以用。 UI界面: UI界面代码: 界面1: { 请在下面设置话术: { 输入框: …

抖音小店没有流量?如何快速起店?实操经验分享!

我是电商珠珠 做抖音小店最重要的就是流量,店铺没有流量也就意味着销量上不去,最后只能被平台清退。 我做抖音小店也已经快三年的时间了,这种情况我也遇到过,接下来给大家讲讲解决方案。 第一步,选品 品是整个店铺…

linux高级篇基础理论四(rsync,inotify,squid,KVM虚拟机)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技…

java架构师禁止在项目中使用继承,合理吗?

java架构师禁止在项目中使用继承,合理吗? 如果建议用组合替代继承,非必要不用继承,这个很合理的建议的。 在非必要的情况下不用继承,用组合替代有几个优势:最近很多小伙伴找我,说想要一些 Jav…

我们应该如何理解Java集合框架的关键知识点?

我们应该如何理解Java集合框架的关键知识点? java集合是教存取数据的一个容器,涵盖了各种存和取的方式,应用在不同的工作场景中,要想了解java集合的相关知识,建议先好好学习一下数据结构这本书。最近很多小伙伴找我&am…

【面试】测试/测开(未完成版)

1. 黑盒测试方法 黑盒测试:关注的是软件功能的实现,关注功能实现是否满足需求,测试对象是基于需求规格说明书。 1)等价类:有效等价类、无效等价类 2)边界值 3)因果图:不同的原因对应…

Python接口自动化测试之post请求详解

前言 在HTTP协议中,与get请求把请求参数直接放在url中不同,post请求的请求数据需通过消息主体(request body)中传递。 且协议中并没有规定post请求的请求数据必须使用什么样的编码方式,所以其请求数据可以有不同的编码方式,服务…

vue中使用echarts实现省市地图绘制,根据数据显示不同区域颜色,点击省市切换,根据经纬度打点

一、实现效果 使用echarts实现省市地图绘制根据数据不同显示不同区域颜色实现省市地图点击切换效果实现地图上根据经纬度打点 二、实现方法 1、安装echarts插件 npm install echarts --save2、获取省市json数据 https://datav.aliyun.com/portal/school/atlas/area_select…

解决因跨域导致使用a标签下载文件download属性失效无法自定义命名的问题

问题背景&#xff1a; 在使用a标签下载文件时&#xff0c;download属性可以更改下载的文件名。 // 下载a.exe,并采用默认命名 <a href"/images/a.exe" download>点击下载</a>// 将a.exe改名为b.exe下载 <a href"/images/a.exe" download&…

PT Plugin Plus(PT助手、种子下载)扩展程序安装教程

PT助手 PT 助手 Plus&#xff0c;是一款浏览器插件&#xff08;Web Extensions&#xff09;&#xff0c;主要用于辅助下载 PT 站的种子。 适用于各 PT 站&#xff0c;可使下载种子等各项操作变化更简单、快捷。配合下载服务器&#xff08;如 Transmission、Torrent 等&#x…

现货黄金休市时间长不长?科普一下交易时间

先告诉你答案&#xff0c;现货黄金市场每天的交易时间很长&#xff0c;因为它全天的盘面是由亚洲、欧洲和北美时间无缝地连接而成&#xff0c;无论投资者身处何方&#xff0c;通过哪里的平台入市&#xff0c;每天基本上都可以享受到连续20多个小时的行情。 只要投资者有足够的精…

C生万物 | 从浅入深理解指针【最后部分】

C生万物 | 从浅入深理解指针【最后部分】 文章目录 C生万物 | 从浅入深理解指针【最后部分】前言sizeof和strlen的对比sizeofstrlen 数组和指针笔试题解析一维数组字符数组二维数组 前言 我们前面学了四个部分了&#xff0c;如果没有看前面的建议可以看一下前面的~~ C生万物 |…

关于FreeRTOS函数xSemaphoreGiveFromISR卡死的问题

0. 概述 关于FreeRTOS函数xSemaphoreGiveFromISR卡死的问题 1. 遇到的问题 在使用FreeRTOS调试激光雷达检测面积的项目的时候&#xff0c;遇到一个现象&#xff1a;在新加了一个线程之后&#xff0c;把程序下载到板子之后程序不会运行&#xff08;实际上已经运行了&#xff…