XML教程、语法手册、数据读取方式大全
XML简单易懂教程
| 本文提供全流程,中文翻译。 Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) | 
一
XML ——数据格式的写法
节点的书写规范必须是 <Root>开头 </Root>结束,中间包含子节点
 <Root> —— 根节点; ID 是根节点 <Root>的一个属性
 <People > —— 一级节点
 <Name> —— 二级节点
 <Age> —— 二级节点
名字取自《魁拔》动画电影 —— 推荐观看,国产有诗意的作品 
<?xml version="1.0" encoding="utf-8"?>
<!--这是一行注释,上边首行是一个固定格式-->
<!--version:版本,encoding:编码格式-->
<Root>
  <People ID="1">
    <Name>我的小鱼你醒了</Name>
    <Age>11</Age>
  </People>
  <People ID="2">
    <Name>还记得早晨吗</Name>
    <Age>22</Age>
  </People>
  <People ID="3">
    <Name>昨夜你曾经说</Name>
    <Age>33</Age>
  </People>
  <People ID="4">
    <Name>愿夜幕永不开启</Name>
    <Age>44</Age>
  </People>
</Root>二
Read Data —— 读取数据
1
- - First Method  —— 层层读取(- -复杂)
Document —— 文档
Element —— 元素
Application.dataPath —— 数据文件夹所在路径
Attribute —— 属性
InnerText —— 元素文本
 (XmlElement) —— 强制转换
using UnityEngine;
using System.Xml;//引用XML命名空间
/// <summary>
/// 测试读取XML脚本
/// </summary>
public class TestXML : MonoBehaviour
{
    /// <summary>
    /// 初始化函数
    /// </summary>
    void Start()
    {
        FistMethod(); //调用第一种方法
    }
    /// <summary>
    /// 第一种读取方法
    /// </summary>
    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]; //打印子节点<People>中的:子节点的第一个节点 <Name>
            XmlElement ageEle  = (XmlElement) childNodeEle.ChildNodes[1]; //打印子节点<People>中的:子节点的第二个节点 <Age>
            print(nameEle.InnerText + " " + ageEle.InnerText);            //打印Name 和 Age
        }
        //rootEle.GetElementsByTagName("Name")  通过名字标签来获取元素
        XmlNodeList list = rootEle.GetElementsByTagName("Name"); //找到节点<Root>中,名叫<Name>的子节点. (系统会自动找<People>下的所有<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 集合
using UnityEngine;
using System.Xml;//引用XML命名空间
/// <summary>
/// 测试读取XML脚本
/// </summary>
public class TestXML : MonoBehaviour
{
    /// <summary>
    /// 初始化函数
    /// </summary>
    void Start()
    {
        SecondMethod(); //调用第二种方法
    }
    /// <summary>
    /// 第二种读取方法
    /// </summary>
    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>  
2
- - Last Element  —— 取得最后一个元素
 doc.SelectNodes("/Root/People[last()]/Name"); 
取得第二个节点 <People> 中的最后一个节点  <Name>  
3
- - Penult Element  —— 取得倒数第二个元素
 doc.SelectNodes("/Root/People[last()-1]/Name"); 
取得第二个节点 <People> 中的倒数第二个节点  <Name>  
4
- - the top several Element  —— 取得前几个元素
 doc.SelectNodes("/Root/People[position()<4]/Name"); 
position() 小于4,就是前三个
取得第二个节点 <People> 中的前三个节点  <Name>  
5
- - Select Attribute  Element  —— 根据属性值ID找节点
 doc.SelectNodes("/Root/People[@ID]/Name"); 
取得第二个节点 <People> 中属性为  ID  的节点  <Name>  
6
- - Reject Attribute  Element  —— 根据属性值ID剔除节点
 doc.SelectNodes("/Root/People[@ID=3]/Name"); 
取得第二个节点 <People> 中属性为  ID  = 3的节点  <Name>  
 doc.SelectNodes("/Root/People[@ID<3]/Name"); 
取得第二个节点 <People> 中属性为  ID  < 3的节点  <Name>  
2
- - XPath  ——相对路径(- - 极其简单)
Document —— 文档
Element —— 元素
Application.dataPath —— 数据文件夹所在路径
InnerText —— 元素文本
doc.SelectNodes("//Age"); 函数中传入的参数为:相对路径
“//第二节点 Age ”
函数会根据XPath表达式,找到XML文档中,一个绝对路径下的所有 Age 子节点,并返回一个 List 集合
注意:数据量庞大的时候 —— 性能上没有绝对路径好
using UnityEngine;
using System.Xml;//引用XML命名空间
/// <summary>
/// 测试读取XML脚本
/// </summary>
public class TestXML : MonoBehaviour
{
    /// <summary>
    /// 初始化函数
    /// </summary>
    void Start()
    {
        thirdMethod(); //调用第三种XPath相对路径 读取方法
    }
    /// <summary>
    /// 第三种XPath相对路径 读取方法
    /// </summary>
    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 
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
XML教程、语法手册、数据读取方式大全的更多相关文章
- XML数据读取方式性能比较(一)
		原文:XML数据读取方式性能比较(一) 几个月来,疑被SOA,一直在和XML操作打交道,SQL差不多又忘光了.现在已经知道,至少有四种常用人XML数据操作方式(好像Java差不多),不过还没有实际比较 ... 
- geotrellis使用(二)geotrellis-chatta-demo以及geotrellis框架数据读取方式初探
		在上篇博客(geotrellis使用初探)中简单介绍了geotrellis-chatta-demo的大致工作流程,但是有一个重要的问题就是此demo如何调取数据进行瓦片切割分析处理等并未说明,经过几天 ... 
- Java中XML格式的字符串4读取方式的简单比较
		Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ... 
- XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)
		1.XML 格式规范: ① 必须有一个根元素 ② 不可有空格.不可以数字或.开头.大小写敏感 ③ 不可交叉嵌套 ④ 属性双引号(浏览器自动修正成双引号了) ⑤ 特殊符号要使用实体 ⑥ 注释和HTML一 ... 
- TensorFlow数据读取方式:Dataset API
		英文详细版参考:https://www.cnblogs.com/jins-note/p/10243716.html Dataset API是TensorFlow 1.3版本中引入的一个新的模块,主要服 ... 
- OleDbDataReader快速数据读取方式
		查询得到OleDbDataReader后,有三种方式支持数据读取,如下: //方法一**速度中等 OleDbDataReader reader = command.ExecuteReader(); w ... 
- Druid 0.17入门(4)—— 数据查询方式大全
		本文介绍Druid查询数据的方式,首先我们保证数据已经成功载入. Druid查询基于HTTP,Druid提供了查询视图,并对结果进行了格式化. Druid提供了三种查询方式,SQL,原生JSON,CU ... 
- TensorFlow全新的数据读取方式:Dataset API入门教程
		TensorFlow.data : http://tech.ifeng.com/a/20171109/44752505_0.shtml Pytorch:https://ptorch.com/docs/ ... 
- MYSQL 的数据读取方式
		例子: create table T(X bit(8)); insert into T (X) values(b'11111111'); select X from T; 这个时候会发现这个X 是乱码 ... 
随机推荐
- ng的概念层次(官方文档摘录)
			官方文档是这么说的: You write Angular applications by: composing HTML templates with Angularized markup, writ ... 
- sublime text注册码与快捷键
			其他版本: —– BEGIN LICENSE —– Michael Barnes Single User License EA7E-821385 8A353C41 872A0D5C DF9B2950 ... 
- Contiguous Array with Equal Number of 0 & 1
			2018-07-08 13:24:31 问题描述: 问题求解: 问题规模已经给出是50000量级,显然只能是O(n),至多O(nlogn)的复杂度.本题使用DP和滑动数组都比较棘手,这里给出的方案是p ... 
- English trip -- VC(情景课)8 D Reading
			Listen and read. Shop Smart [smɑːt] Employee of the Month: Sara['særə] (萨拉) Lopez(洛佩斯) Congratulati ... 
- mac外接显示器 双屏同时滑动问题
			问题:mac pro 外接一个显示器,用四个手指横向切换屏幕的时候,外接的显示器也一起跟着动了 解决: 
- (GoRails) 如何去掉form输入框头尾的空格;何时用callbacks,gem;
			视频:https://gorails.com/episodes/when-callbacks-and-adding-dependencies-are-good?autoplay=1 主题:应当在什么时 ... 
- 百度定位SDK
			按照官网要求配置SHA1和包名生成ak秘钥 生成秘钥命令: keytool -list -v -keystore debug.keystore 密码:原始密码为android 添加libs文件夹并在g ... 
- h1026 BFS(打印x与路径)
			题意: Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ... 
- 第 4 章—— C# 语言特性(《精通 ASP.NET MVC 5》)
			这里只提供各个特性的简单概括. C# 的完整指南可参阅<Introducing Visual C#>.深度了解 LINQ 可参考<Pro LINQ in C#> 4.1 准备示 ... 
- POJ 1504 Adding Reversed Numbers
			/*Sample Input 3 24 1 4358 754 305 Sample Output 34 1998 */ 值得总结的几点就是: 1.atoi函数将字符串转化为整型数字(类似于强制转换) ... 
