(1) 创建一个无继承实体类Class01,一个纯C#无继承的实体类Class02.
(2) Class01根据XML文档中的内容设置具体的字段,并且设置get/set。(一般来说XML保存的数据会有多组,以武器为例,武器有刀,剑,枪等等。但是他们的数据类型会是一致的,攻击力,耐久值)
(3) Class02创建public List
(4) 在Class02中设置一个有参函数:ReadXMLByPath(string path){} 读取XML中的数据。这个函数需要对应XML文档的地址才能调用。
① 包含XML文档的头文件 using System.XML;
② 实例化一个XmlDocument对象dor;
③ dor.Load(path)或者dor.LoadXml(path)读取到文档;
(5) 下面是具体代码。
大刀
50
150
直剑
30
100
长枪
100
80
public class Class01
{
private string armsName; //武器名
private string attack; //攻击力
private string durable; //耐久
//有参构造函数
public Class01(string arms , string attack , string durable)
{
this.armsName = arms;
this.attack= attack ;
this.durable= durable;
}
public ArmsName
{
get { return armsName; }
set { armsName = Value; }
}
public Attack
{
get { return attack; }
set { attack = Value; }
}
public Durable
{
get { return durable; }
set { durable = Value; }
}
}
using System.Collections;
using System.Collections.Generic;
using System.Xml;
public class class02
{
//用于存储Class01的实体集合
public List ClassList = new List();
///
/// 通过路径读取XML中的数据
///
/// 路径
public void ReadXMLByPath(string path)
{
//实例化一个XML对象
XmlDocument dor = new XmlDocument();
//加载文档
//dor.Load(path);
dor.LoadXml(path);
//获取文档中的根节点
XmlNode root = dor.SelectSingleNode("Arms");
//获取子节点
XmlNodeList nodeList = root.ChildNodes;
//遍历
foreach (XmlNode node in nodeList)
{
string armsName = node.ChildNodes[0].InnerText;
string attack = node.ChildNodes[1].InnerText;
string durable = node.ChildNodes[2].InnerText;
//遍历输出测试
//string info = string.Format("name:{0},attack:{1},durable:{2},price:{3}", armsName, attack, durable);
//Debug.Log(info);
Class01 item = new Class01(armsName, attack, durable);//实例化Class01
ClassList.Add(item);//将Class01添加到ClassList中
}
}
}
此XML文档中的数据按照武器类型分成三份数据存储在ClassList集合中。
需要使用的时候通过实例化Class02来调用ClassList里面的数据。
2.Unity 修改XML文档(1)仍然使用上一个示例。
(2)在Class02中,继续添加新的函数 UpdateXMLDate(string path , string key , string value){}
(3)“path”代表文档路径,“key”代表节点名称,“value”代表修改后的值;
(4)通过key找到对应节点的值,并用value进行替换。
(5)具体代码如下:
////// 修改XML文档中的数据 /// /// 文档路径 /// 节点1 /// 节点2 /// 修改值 public void UpdateXMLDate(string path, string key1, string key2, string value) { XmlDocument dor = new XmlDocument();//实例化一个XML对象 dor.LoadXml(path);//加载文档 //dor.Load(path); XmlNode root = dor.SelectSingleNode("Arms");//获取根节点 XmlNodeList nodeList = root.ChildNodes;//获取子节点 //示例XML文档有两层子节点,所以使用两个foreach查找 //如果层数较多,同理,虽然比较笨不过有用 foreach (XmlNode node in nodeList) { //在根节点的子节点数组中查找 if (node.Name == key1) { //在上述节点数组中查找 foreach (XmlNode nodeChild in node.ChildNodes) { if (nodeChild.Name == key2) { nodeChild.InnerText = value;//修改对应节点的数据 dor.Save(path);//原路径保存文档 } } } } }
需要使用的时候通过实例化Class02来调用这个函数,达到修改的目的。



