博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML教程、语法手册、数据读取方式大全
阅读量:6225 次
发布时间:2019-06-21

本文共 5476 字,大约阅读时间需要 18 分钟。

XML简单易懂教程


本文提供全流程,中文翻译。
Chinar坚持将简单的生活方式,带给世人!
(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)



XML ——数据格式的写法

节点的书写规范必须是 <Root>开头 </Root>结束,中间包含子节点

<Root> —— 根节点; ID 是根节点 <Root>的一个属性

<People > —— 一级节点

<Name> —— 二级节点

<Age> —— 二级节点

名字取自《魁拔》动画电影 —— 推荐观看,国产有诗意的作品

举个栗子黑白88

我的小鱼你醒了
11
还记得早晨吗
22
昨夜你曾经说
33
愿夜幕永不开启
44

Read Data —— 读取数据

1
- - First Method —— 层层读取(- -复杂)

Document —— 文档

Element —— 元素

Application.dataPath —— 数据文件夹所在路径

Attribute —— 属性

InnerText —— 元素文本

(XmlElement) —— 强制转换

举个栗子黑白88

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 } }}

这里写图片描述


2
- - Second Method —— XPath表达式读取(- -简单)

1
- - XPath —— 绝对路径

Document —— 文档

Element —— 元素

Application.dataPath —— 数据文件夹所在路径

InnerText —— 元素文本

doc.SelectNodes("/Root/People/Name"); 函数中传入的参数为:绝对路径

“/根节点 Root /第一节点 People /第二节点 Name ”

函数会根据XPath表达式,找到XML文档中,一个绝对路径下的所有 Name 子节点,并返回一个 List 集合

举个栗子黑白88

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); //打印元素文本        }    }}

这里写图片描述


1
- - First Element —— 取得第一个元素

doc.SelectNodes("/Root/People[1]/Name");

取得第二个节点 <People> 中的第一节点 <Name>

举个栗子黑白88

第一个元素


2
- - Last Element —— 取得最后一个元素

doc.SelectNodes("/Root/People[last()]/Name");

取得第二个节点 <People> 中的最后一个节点 <Name>

举个栗子黑白88

这里写图片描述


3
- - Penult Element —— 取得倒数第二个元素

doc.SelectNodes("/Root/People[last()-1]/Name");

取得第二个节点 <People> 中的倒数第二个节点 <Name>

举个栗子黑白88

这里写图片描述


4
- - the top several Element —— 取得前几个元素

doc.SelectNodes("/Root/People[position()<4]/Name");

position() 小于4,就是前三个

取得第二个节点 <People> 中的前三个节点 <Name>

举个栗子黑白88

这里写图片描述


5
- - Select Attribute Element —— 根据属性值ID找节点

doc.SelectNodes("/Root/People[@ID]/Name");

取得第二个节点 <People> 中属性为 ID 的节点 <Name>

举个栗子黑白88

这里写图片描述


6
- - Reject Attribute Element —— 根据属性值ID剔除节点

doc.SelectNodes("/Root/People[@ID=3]/Name");

取得第二个节点 <People> 中属性为 ID = 3的节点 <Name>

举个栗子黑白88

这里写图片描述

doc.SelectNodes("/Root/People[@ID<3]/Name");

取得第二个节点 <People> 中属性为 ID < 3的节点 <Name>

举个栗子黑白88

这里写图片描述


2
- - XPath ——相对路径(- - 极其简单)

Document —— 文档

Element —— 元素

Application.dataPath —— 数据文件夹所在路径

InnerText —— 元素文本

doc.SelectNodes("//Age"); 函数中传入的参数为:相对路径

“//第二节点 Age ”

函数会根据XPath表达式,找到XML文档中,一个绝对路径下的所有 Age 子节点,并返回一个 List 集合

注意:数据量庞大的时候 —— 性能上没有绝对路径好

举个栗子黑白88

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); //打印元素文本        }    }}

这里写图片描述


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

你可能感兴趣的文章
Java刷题知识点之什么是死锁、死锁产生的4个必要条件、死锁的解除与预防
查看>>
ArcGIS Engine对象库
查看>>
图片在保存的时候===》出现这个异常:GDI+ 中发生一般性错误
查看>>
Hadoop MapReduce编程 API入门系列之wordcount版本2(六)
查看>>
分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控
查看>>
运行灵活网页布局的示例程序
查看>>
Android -- Service绑定解绑和aidl
查看>>
它们的定义AlertDialog(二)
查看>>
SQL Server-聚焦计算列或计算列持久化查询性能(二十二)
查看>>
ten sentences(31-40)
查看>>
设计模式(二)工厂方法(创建型)
查看>>
文本比较算法Ⅵ——用线性空间计算最大公共子序列(翻译贴)
查看>>
Winform系列——好用的DataGridview过滤控件(表格的高级搜索功能)
查看>>
KVM 介绍(1):简介及安装
查看>>
Java没有源代码的同步集合~
查看>>
各类总线传输速率【转】
查看>>
KafkaConsumer 长时间地在poll(long )方法中阻塞
查看>>
More than 100 ABAP Interview Faq's(2)
查看>>
Apache Solr查询语法
查看>>
Javascript中typeof instanceof constructor的区别
查看>>