备案ip 查询网站查询网站查询系统,响应式网站用什么技术做,鹿泉市建设局网站,专门做优惠劵的网站解析XML文件 需要先
1.【加载XML文件】
而 【加载XML】文件有两种方式
【第一种 —— 使用Unity资源系统加载文件】
TextAsset xml Resources.LoadTextAsset(filePath);
XmlDocument doc new XmlDocument();
doc.LoadXml(xml.text);
【第二种 —— 在C#文件IO…解析XML文件 需要先
1.【加载XML文件】
而 【加载XML】文件有两种方式
【第一种 —— 使用Unity资源系统加载文件】
TextAsset xml Resources.LoadTextAsset(filePath);
XmlDocument doc new XmlDocument();
doc.LoadXml(xml.text);
【第二种 —— 在C#文件IO接口加载文件】
XmlDocument doc new XmlDocument();
doc.Load(D:\Dec\info.xml);
2.【解析XML文件】 分三步 (1)第一步 - 获取根节点下的所有子节点的List
XmlNodeList nodLst doc.SelectSingleNode(root).ChildNodes; (2)第二步 - 将某一个节点转化为一个XmlElement
XmlElement ele nodLst[i] as XmlElement; (3)从XmlElement里获取名称为ID的数据
string value ele.GetAttributeNode(ID).InnerText;
注意数据都是以字符串的形式存储 需要自己转化为对应的数据类型
因为 配置文件本身就是一种资源
所以在资源加载服务层ResSvc.cs解析使用 这里我们需要创建一个XML配置文件常量类来记录不同的XML文件的名称 编写脚本
//功能 : 路径常量宣言
public class PathDefine {public const string RDNameCfg ResCfgs/rdname;
}其中路径名称要一致 在资源加载服务ResSvc.cs中填好加载的文件路径 如果XML文件可能加载失败时会导致程序崩溃 所以加一层判断 如果加载成功了那么 就解析这个文件
先创建一个XML文件 然后加载xml文件中的text信息 然后开始解析XML文件 其中这个root是配置文件中的头节点 获取了这个配置文件的子节点 就可以进行遍历 并获取ID号 因为获取的这个ID号可以判断这个配置文件加载是否成功
所以加一层判断 如果这个ID号不存在 后面就不需要读了就 跳过
接着如果拿到了这个ID号就遍历这个节点里面的属性
比如说拿到了ID 1 的节点就遍历里面的属性 然后将定义三个姓氏、男名、女名列表 然后遍历ID号的属性 将这些属性分别存储到这三个列表中 using System;
using System.Collections.Generic;
using System.Xml;
using UnityEngine;
using UnityEngine.SceneManagement; //异步加载 命名空间
//功能 : 资源加载服务
public class ResSvc : MonoBehaviour{#region 单例模式public static ResSvc Instance null;#endregionpublic void InitSvc(){#region 单例模式Instance this;#endregion#region InitCfgs-XML配置文件InitRDNameCfg();#endregionDebug.Log(Init ResSvc...);}#region 【委托】更新回调 进度值Action prgCB null;#endregion//自定义异步加载public void AsyncLoadScene(string sceneName,Action loaded) {#region 窗口基类的好处GameRoot.Instance.loadingWnd.SetWndState();#endregion//拿到异步操作AsyncOperation sceneAsync SceneManager.LoadSceneAsync(sceneName);#region 【委托】更新回调 进度值//Lamd表达式prgCB () {//当前加载进度float val sceneAsync.progress;GameRoot.Instance.loadingWnd.SetProgress(val);if (val 1){#region Loaded回调判断if (loaded ! null)loaded();#endregion#region 单例调用打开登录窗口//LoginSys.Instance.OpenLoginWnd();#endregion//当进度满后 进度值 置空prgCB null;sceneAsync null;GameRoot.Instance.loadingWnd.gameObject.SetActive(false);}};#endregion}#region 【委托】更新回调 进度值void Update(){if(prgCB ! null)prgCB();}#endregion#region 音乐播放资源_字典Dictionarystring,AudioClip adDic new Dictionarystring,AudioClip();public AudioClip LoadAudio(string path, bool cache false) {AudioClip au null;//检查路径是否存在 需要对资源进行加载//out的作用是 如果路径已经存在这个资源 那么out直接就返回了if (!adDic.TryGetValue(path, out au)) {au Resources.LoadAudioClip(path);//检查是否需要缓存 避免重复加载if (cache) {adDic.Add(path, au);}}return au;}#endregion#region InitCfgs-XML配置文件#region 遍历属性 - 定义//存储姓氏的列表 定义Liststring surnameLst new Liststring();//男人名字的列表 定义Liststring manLst new Liststring();//女人名字的列表 定义Liststring womanLst new Liststring();#endregionvoid InitRDNameCfg() {//1.加载XML文件TextAsset xml Resources.LoadTextAsset(PathDefine.RDNameCfg);if (!xml){Debug.LogError(xml file: PathDefine.RDNameCfg not exist);}else {//1.获取XML文件//创建XML配置文件XmlDocument doc new XmlDocument();//加载获取xml文件的文本信息doc.LoadXml(xml.text);//2.解析XML文件 - (1)获取根节点下的所有子节点的ListXmlNodeList nodLst doc.SelectSingleNode(root).ChildNodes;//遍历子节点for (int i 0; i nodLst.Count; i){// - (2)将某一个节点转化为一个XmlElementXmlElement ele nodLst[i] as XmlElement;if (ele.GetAttributeNode(ID) null) {continue;}//获取ID号 - (3)从XmlElement里获取名称为ID的数据int ID Convert.ToInt32(ele.GetAttributeNode(ID).InnerText);#region 遍历属性foreach (XmlElement e in nodLst[i].ChildNodes) {switch (e.Name) {case surname://增加值surnameLst.Add(e.InnerText);break;case man://增加值manLst.Add(e.InnerText);break;case woman://增加值womanLst.Add(e.InnerText);break;}}#endregion}}}#endregion
}这样这个XML配置文件 就解析完成了
End.