本文共 5476 字,大约阅读时间需要 18 分钟。
本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
节点的书写规范必须是 <Root>
开头 </Root>
结束,中间包含子节点
<Root>
—— 根节点; ID
是根节点 <Root>
的一个属性
<People >
—— 一级节点
<Name>
—— 二级节点
<Age>
—— 二级节点
名字取自《魁拔》动画电影 —— 推荐观看,国产有诗意的作品
我的小鱼你醒了 11 还记得早晨吗 22 昨夜你曾经说 33 愿夜幕永不开启 44
Element —— 元素
Application.dataPath —— 数据文件夹所在路径
Attribute —— 属性
InnerText —— 元素文本
(XmlElement)
—— 强制转换
using UnityEngine;using System.Xml;//引用XML命名空间////// 测试读取XML脚本/// public class TestXML : MonoBehaviour{ ////// 初始化函数 /// void Start() { FistMethod(); //调用第一种方法 } ////// 第一种读取方法 /// void FistMethod() { XmlDocument doc = new XmlDocument(); //实例化一个XmlDocument类对象 :创建一个XML文档 doc.Load(Application.dataPath + "/Data/XML.xml"); //读取XML文档 XmlElement rootEle = (XmlElement) doc.LastChild; //获得根节点 :由于根节点就是最后一个节点,所以用Lastchild foreach (XmlElement childNodeEle in rootEle.ChildNodes) //遍历根节点中的子节点:rootEle.ChildNodes —— 返回的是所有子节点 { print(childNodeEle.GetAttribute("ID")); //打印子节点的属性 XmlElement nameEle = (XmlElement) childNodeEle.ChildNodes[0]; //打印子节点中的:子节点的第一个节点 XmlElement ageEle = (XmlElement) childNodeEle.ChildNodes[1]; //打印子节点 中的:子节点的第二个节点 print(nameEle.InnerText + " " + ageEle.InnerText); //打印Name 和 Age } //rootEle.GetElementsByTagName("Name") 通过名字标签来获取元素 XmlNodeList list = rootEle.GetElementsByTagName("Name"); //找到节点 中,名叫 的子节点. (系统会自动找 下的所有 节点) foreach (XmlElement ele in list) //遍历集合中元素 { print(ele.InnerText); //打印元素文本Name } }}
Element —— 元素
Application.dataPath —— 数据文件夹所在路径
InnerText —— 元素文本
doc.SelectNodes("/Root/People/Name");
函数中传入的参数为:绝对路径
“/根节点 Root /第一节点 People /第二节点 Name ”
函数会根据XPath表达式,找到XML文档中,一个绝对路径下的所有 Name 子节点,并返回一个 List 集合
using UnityEngine;using System.Xml;//引用XML命名空间////// 测试读取XML脚本/// public class TestXML : MonoBehaviour{ ////// 初始化函数 /// void Start() { SecondMethod(); //调用第二种方法 } ////// 第二种读取方法 /// void SecondMethod() { XmlDocument doc = new XmlDocument(); //实例化一个XmlDocument类对象 :创建一个XML文档 doc.Load(Application.dataPath + " " + "/Data/XML.xml"); //读取XML文档 //XPath表达式来解析 :一个路径语法 //doc.SelectSingleNode(""); 查找单个节点 //doc.SelectNodes(""); 查找多个节点 //doc.SelectNodes("")返回值 :一个 XmlnodeList 集合 XmlNodeList list = doc.SelectNodes("/Root/People/Name");//“/根节点Root/第一节点People/第二节点Name” foreach (XmlElement ele in list)//遍历集合中的元素 { print(ele.InnerText); //打印元素文本 } }}
doc.SelectNodes("/Root/People[1]/Name");
取得第二个节点 <People>
中的第一节点 <Name>
doc.SelectNodes("/Root/People[last()]/Name");
取得第二个节点 <People>
中的最后一个节点 <Name>
doc.SelectNodes("/Root/People[last()-1]/Name");
取得第二个节点 <People>
中的倒数第二个节点 <Name>
doc.SelectNodes("/Root/People[position()<4]/Name");
position() 小于4,就是前三个
取得第二个节点 <People>
中的前三个节点 <Name>
doc.SelectNodes("/Root/People[@ID]/Name");
取得第二个节点 <People>
中属性为 ID 的节点 <Name>
doc.SelectNodes("/Root/People[@ID=3]/Name");
取得第二个节点 <People>
中属性为 ID = 3的节点 <Name>
doc.SelectNodes("/Root/People[@ID<3]/Name");
取得第二个节点 <People>
中属性为 ID < 3的节点 <Name>
Document —— 文档
Element —— 元素
Application.dataPath —— 数据文件夹所在路径
InnerText —— 元素文本
doc.SelectNodes("//Age");
函数中传入的参数为:相对路径
“//第二节点 Age ”
函数会根据XPath表达式,找到XML文档中,一个绝对路径下的所有 Age 子节点,并返回一个 List 集合
注意:数据量庞大的时候 —— 性能上没有绝对路径好
using UnityEngine;using System.Xml;//引用XML命名空间////// 测试读取XML脚本/// public class TestXML : MonoBehaviour{ ////// 初始化函数 /// void Start() { thirdMethod(); //调用第三种XPath相对路径 读取方法 } ////// 第三种XPath相对路径 读取方法 /// void thirdMethod() { XmlDocument doc = new XmlDocument(); //实例化一个XmlDocument类对象 :创建一个XML文档 doc.Load(Application.dataPath + " " + "/Data/XML.xml"); //读取XML文档 //XPath表达式来解析 :一个路径语法 //doc.SelectSingleNode(""); 查找单个节点 //doc.SelectNodes(""); 查找多个节点 //doc.SelectNodes("")返回值 :一个 XmlnodeList 集合 XmlNodeList list = doc.SelectNodes("//Age"); //直接找“//第二节点Age” —— 性能上没有绝对路径好 foreach (XmlElement ele in list) //遍历集合中的元素 { print(ele.InnerText); //打印元素文本 } }}
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com 对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址