XML简介
- XML是⼀个特殊格式的⽂档,后缀为.xml的文件
- XML是一种可扩展的标记语言
- XML是一种树形结构的存储方式
- XML的可读性很好
XML存储结构
比如存储下图的信息
代码如下:
//name只是举一个例子,方便大家理解属性的含义
<Transform name = "Player"> //根元素 Transform是元素节点 name是属性节点
<Position> //子元素 position是元素节点
<X>0</X> //子元素 X是元素节点 0是数据节点
<Y>1</Y>
<Z>-10</X>
</Position>
//<Transform>……</Transform> <Position>……</Position> <X>……</X> 叫元素
<Rotation>
<X>0</X>
<Y>0</Y>
<Z>0</X>
</Rotation>
<Scale>
<X>1</X>
<Y>1</Y>
<Z>1</X>
</Scale>
</Transform>
XML的使用
常用类
- XmlDocument:XML文件类
- XmlNode:XML节点类
- XmlAttribute:XML属性类
- XmlElement:XML元素类
XmlDocument 类
详细属性和方法
常用属性和方法
- CreateXmlDeclaration :创建一个具有指定值的XmlDeclaration节点
- CreateElement :创建具有指定名称的元素
- CreateNode :创建具有指定的节点类型、Name和NamespaceURI的XmlNode
- AppendChild :将指定的节点添加到该节点的子节点列表的末尾(继承自XmlNode)
- Save :将XML文档保存到指定的文件
- Load:从指定的URL加载XML文档
- LoadXml:从指定的字符串加载XML文档
XmlNode类
详细属性和方法
常用属性和方法
- InnerText :获取或设置节点及其所有子节点的值。(仅元素节点拥有)
- Value :获取或设置节点的值。(仅属性节点拥有)
- AppendChild : 将指定的节点添加到该节点的子节点列表的末尾
- ChildNodes:获取节点的所有子节点
- FirstChild:获取节点的第一个子节点
- HasChildNodes:判断该节点是否有任何子节点
- InnerText:获取或设置节点及其所有子节点的值
- SelectSingleNode:选择匹配XPath表达式的第一个XMLNode
- SelectNodes:选择匹配XPath表达式的所有XMLNode
XmlAttribute类
详细属性和方法
常用属性和方法
XmlElement类
详细属性和方法
常用属性和方法
- SetAttribute :设置具有指定名称的特性的值
- GetAttribute:返回具有指定名称的属性值
- HasAttributes :判断该元素节点是否具有属性
生成步骤
- 引用C#的命名空间 System.Xml
- 生成XML文档 (XmlDocument 类)
- 生成根元素(XmlElement 类)添加给文档对象
- 循环⽣成子元素添加给父元素
- 将生成的XML文档保存
例子
using System.Xml; //引入命名空间
public class XMLwrite
{
//创建xml⽂件对象
XmlDocument doc = new XmlDocument();
//创建xml头
XmlNode xmldcd = doc.CreateXmlDeclaration (“1.0”, “utf-8”, null);
//添加xml头
doc.AppendChild (xmldcd);
//创建xml根节点(元素属于节点)users
XmlNode root = doc.CreateElement(“users”);
//添加xml根节点
doc.AppendChild (root);
//创建⼦节点
XmlNode xn_element = doc.CreateNode (XmlNodeType.Element, “name”, null);
//设置⼦节点的值
xn_element.InnerText = “Albert”;
//创建属性
XmlAttribute xa = doc.CreateAttribute (“no”);
//设置属性值
xa.Value = “1234”;
//获取元素的document
XmlDocument xd = xn_element.OwnerDocument;
//设置元素属性
xn_element.Attributes.SetNamedItem (xa);
//添加⼦节点到root节点
root.AppendChild (xn_element);
//保存xml
doc.Save(Application.dataPath + “/test.xml”);
}
解析步骤
- 引用C#的命名空间 System.Xml
- 加载XML文档
- 获取根节点
- 开始解析 (通过Xpath来解析)
例子
Using System.Xml; //引入命名空间
public class XMLwrite
{
//创建xml⽂件对象
XmlDocument doc = new XmlDocument();
//加载xml⽂件
doc.Load(Application.dataPath + “/book.xml”);
//获取根节点
XmlElement root = doc.DocumentElement;
//筛选节点
XmlNodeList listNodes = root.SelectNodes(“/bookstore/book/price”);
//获取List中每⼀个节点
foreach (XmlNode node in listNodes )
{
//打印节点内容
Debug.Log(node.InnerText);
}
}