XML文件存储
存储位置分析
- 存储xml文件 在Unity中一定是使用各平台都可读可写可找到的路径
- Resources 可读 不可写 打包后找不到 (×)
- Application.streamingAssetsPath 可读 PC端可写 iosmac不可写 找得到 (×)
- Application.dataPath 打包后找不到(×)
- Application.persistentDataPath 可读可写找得到 (√)
存储xml文件
XmlDocument 需要引入头文件using System.Xml;
代码
//关键类 XmlDocument 用于创建节点 存储文件
//关键类 XmlDeclaration 用于添加版本信息
//关键类 XmlElement 节点类
//存储有5步
//1.创建文本对象
XmlDocument xml = new XmlDocument();
//2.添加固定版本信息
//这一句代码 相当于就是创建<?xml version="1.0" encoding="UTF-8"?>这句内容
XmlDeclaration xmlDec = xml.CreateXmlDeclaration("1.0", "UTF-8", "");
//创建完成过后 要添加进入 文本对象中
xml.AppendChild(xmlDec);
//3.添加根节点
XmlElement root = xml.CreateElement("Root");
xml.AppendChild(root);
//4.为根节点添加子节点
//加了一个 name子节点
XmlElement name = xml.CreateElement("name");
name.InnerText = "唐老狮";
root.AppendChild(name);
XmlElement atk = xml.CreateElement("atk");
atk.InnerText = "10";
root.AppendChild(atk);
XmlElement listInt = xml.CreateElement("listInt");
for (int i = 1; i <= 3; i++)
{
XmlElement childNode = xml.CreateElement("int");
childNode.InnerText = i.ToString();
listInt.AppendChild(childNode);
}
root.AppendChild(listInt);
XmlElement itemList = xml.CreateElement("itemList");
for (int i = 1; i <= 3; i++)
{
XmlElement childNode = xml.CreateElement("Item");
//添加属性
childNode.SetAttribute("id", i.ToString());
childNode.SetAttribute("num", (i * 10).ToString());
itemList.AppendChild(childNode);
}
root.AppendChild(itemList);
//5.保存
xml.Save(path);
上述代码得到的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<name>ADd7</name>
<atk>10</atk>>
<listInt>
<int>1</int>
<int>2</int>
<int>3</int>
</listInt>
<itemList>
<Item id="1" num="10" />
<Item id="2" num="20" />
<Item id="3" num="30" />
</itemList>
</Root>
文件的修改(添加/移除)
判断文件是否存在 这个功能是在using System.IO中的
代码
//1.先判断是否存在文件
if (File.Exists(path))
{
//2.加载后 直接添加节点 移除节点即可
XmlDocument newXml = new XmlDocument();
newXml.Load(path);
//修改就是在原有文件基础上 去移除 或者添加
//移除
//XmlNode node = newXml.SelectSingleNode("Root").SelectSingleNode("atk");
//这种是一种简便写法 通过/来区分父子关系
node = newXml.SelectSingleNode("Root/atk");
//得到自己的父节点
XmlNode root2 = newXml.SelectSingleNode("Root");
//移除子节点方法
root2.RemoveChild(node);
//添加节点
XmlElement speed = newXml.CreateElement("moveSpeed");
speed.InnerText = "20";
root2.AppendChild(speed);
//改了记得存
newXml.Save(path);
}
上述代码得到的修改后xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<name>ADd7</name>
<listInt>
<int>1</int>
<int>2</int>
<int>3</int>
</listInt>
<itemList>
<Item id="1" num="10" />
<Item id="2" num="20" />
<Item id="3" num="30" />
</itemList>
<speed>2</speed>
</Root>