Unity3D持久化存储(二)XML

XML简介

  1. XML是⼀个特殊格式的⽂档,后缀为.xml的文件
  2. XML是一种可扩展的标记语言
  3. XML是一种树形结构的存储方式
  4. 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 :判断该元素节点是否具有属性

生成步骤

  1. 引用C#的命名空间 System.Xml
  2. 生成XML文档 (XmlDocument 类)
  3. 生成根元素(XmlElement 类)添加给文档对象
  4. 循环⽣成子元素添加给父元素
  5. 将生成的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”);
}

解析步骤

  1. 引用C#的命名空间 System.Xml
  2. 加载XML文档
  3. 获取根节点
  4. 开始解析 (通过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);
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值