Unity读取xml文件

news/2024/9/20 9:42:44/文章来源:https://www.cnblogs.com/su-make/p/17848135.html

在XML中配置字典名称,字典的key和value,目前key和value都是用的string类型,通过ParseXml类的ParseData函数,传递字典名称和key来获取value

xml文件内容

解析数据类

using UnityEngine;
using System.Xml;
using System;/// <summary>
/// 读取xml信息类
/// </summary>
public class ParseXml
{private string xmlPath = "Assets/Configs/FormInfo.xml";/// <summary>/// 解析数据/// </summary>/// <param name="dictionary">要解析的字典</param>/// <param name="key">键</param>/// <returns></returns>public string ParseData(string dictionary, string key){try{XmlDocument xmlDocument = new XmlDocument();//加载配置文件xmlDocument.Load(xmlPath);XmlNode xmlRoot = xmlDocument.SelectSingleNode("Body");//加载字典列表XmlNodeList xmlDictionaryList = xmlRoot.ChildNodes;//遍历字典列表for(int i = 0; i < xmlDictionaryList.Count; i++){XmlNode xmlDictionary = xmlDictionaryList.Item(i);if(xmlDictionary.Name != dictionary){continue;}//加载字典项XmlNodeList xmlRootLists = xmlDictionary.ChildNodes;//遍历字典项for(int j = 0; j < xmlRootLists.Count; j++){XmlNode rootNode = xmlRootLists.Item(j);//获取字典项string k = rootNode.Attributes.GetNamedItem("Key").Value;string v = rootNode.Attributes.GetNamedItem("Value").Value;if (key == k){return v;}}}}catch(Exception e){Debug.Log(e);return null;}Debug.Log("NotFound");return null;}
}

调用例子

using UnityEngine;public class GetXml : MonoBehaviour
{ParseXml parseXml = new ParseXml();void Update(){if (Input.GetKeyDown(KeyCode.Q)){Debug.Log(parseXml.ParseData("Dialogs", "1"));}if (Input.GetKeyDown(KeyCode.W)){Debug.Log(parseXml.ParseData("Tips", "1"));}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【比赛】高一小学期2

【比赛】高一小学期2 题解挺唐的比赛,一道数位 dp 原题一道平衡树,然后 T1 数据范围还整错了。。没图了呜呜【比赛】高一小学期2$Rank$赛时日前赛后T1 同类分布 思路 印象里为数不多搞懂了的数位 dp,但过太久忘了,只能赛时打暴力 后来发现跟正解很接近了,只是在 dfs 前的预…

针对于早期版本的flutter开发的app的处理

下为某个flutter开发的app的hook app为flutter开发,知道是一个AES加密,但是相关so中方法的hook经验较少 这个app的dart的版本较早,是2.10的,找了一个开源的脚本,对代码进行了处理,获取到相对的so层的方法和地址 脚本地址:https://github.com/rscloura/Doldrums 目前较好…

(10)逻辑综合添加约束(环境约束)

一、环境约束此外,还有电路内互连线的延时也没有考虑在内四个环境约束:1.输出负载如果电路的输出负载过大,将会加大电路的transition time,从而影响电路时序此外,若dc默认输出负载为0,即相当于不接负载,这样综合出来的电路时序显然过于乐观,不能反映实际工作情况可以设…

[GIT] 解决:git status时有Untracked files(未跟踪的文件)

1 问题描述git pull时失败,报Please move or remove them before you merge。结果git status显示有一堆不太想提交的Untracked files(未跟踪的文件)。那么,Untracked files文件状态的文件,是什么?一般又如何处理呢?2 原因分析我们要真正弄明白问题的原因,我们就要先知道文…

windows版Oracle11g安装记录

一、下载Oracle 11g数据库安装包 已上传至博客园文件中 二、安装Oracle 11g 下载下来是下图这样的两个压缩包:1、解压这两个压缩包到同一个文件夹(切记路径文件不可有中文、空格和不规则字符。): 2、将解压好的win64_11gR2_database_2of2\database\stage\Components下的所有…

使用UFUNCTION(BlueprintCallable)修饰了函数,但是在蓝图中找不到怎么办?

在蓝图图表中,任意空位右键,去掉“情境勾选”就好了。

thinkphp6 使用Workerman测试

1.首先通过 composer 安装 think-worker、think-viewcomposer require topthink/think-worker composer require topthink/think-view安装成功后在项目的config目录会新增3个配置文件 2.修改woker.php中监听的端口return [// 扩展自身需要的配置host => 12…

C++ Boost 字符串处理库

Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程…

LLM推理引擎怎么选?TensorRT vs vLLM vs LMDeploy vs MLC-LLM

LLM擅长文本生成应用程序,如聊天和代码完成模型,能够高度理解和流畅。但是它们的大尺寸也给推理带来了挑战。有很多个框架和包可以优化LLM推理和服务,所以在本文中我将整理一些常用的推理引擎并进行比较。 https://avoid.overfit.cn/post/33f6420c91e74c0eb8d6737cb9471e27…

WPF ComboBox数据绑定:初始化动态加载ItemsSource后首次赋值Text不显示问题解决

原来:<ComboBox Text="{Binding Item}" ItemsSource="{Binding ItemLists}"></ComboBox>private void Paras_Init(){ItemLists = new ObservableCollection<string>();ItemLists.Add("11111");ItemLists.Add("22222&qu…

多边形填充-活动边表法

参考文档: 参考1:https://blog.csdn.net/u013044116/article/details/49737585 参考2:https://blog.csdn.net/keneyr/article/details/83747501 算法思想: 对多边形沿y轴从0开始遍历,建立边表NET。只记录顶点的x, dx, ymax。 根据NET构建活动边表AET(activate edge table)…

WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档

在日常办公场景中,我们经常会遇到这种场景:我们的合同管理系统的各种Word,excel,ppt数据都是以二进制数组的形式存储在数据库中,如何从数据库中读取二进制数据,以二进制数据作为参数,然后加载到浏览器的Office窗口,实现在线编辑Office的功能呢? 猿大师办公助手是猿大师旗…