XML
<?xml version="1.0" encoding="UTF-8"?>
<PlayerInfo>
<name>shan</name>
<atk>100</atk>
<def>12</def>
<moveSpeed>20</moveSpeed>
<roundSpeed>30</roundSpeed>
<money id="1" num="10"></money>
<weapon>
<id>1</id>
<num>2</num>
</weapon>
<weapon>
<id>2</id>
<num>4</num>
</weapon>
<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>
<itemDic>
<int>1</int>
<Item id="1" num="1"/>
</itemDic>
</PlayerInfo>
xml存储
只读不写的XML文件可以放在
Resources或者StreamingAssets文件夹下
动态存储的XML文件放在Application.persistentDataPath路径下
c#读取xml的方式
XmlDocument 把数据加载到内存中 方便读取
XmlTextReader 以流形式加载 内存占用更少 但是单向只读,使用不是特别方便,除非有特殊需求,否则不会使用
linq
通过XmlDocument读取xml文件 有两个API
1直接根据xml字符串内容 来加载xml文件
存放在Resource文件夹下的xml文件加载处理
cs
XmlDoucument xml= new XmlDocument();
TextAsset asset=Resources.Load<TextAsset>("TestXml");
print(asset.text);
//通过这个方法,就能够翻译字符串为xml对象
xml.LoadXml(asset.text);
2 是通过xml文件的路径去进行加载
cs
xml.Load(Application.streamingAssetsPath+"/TestXml.xml");
知识点二 读取元素和属性信息
节点信息类
XmlNode单个节点信息类
节点列表信息
XmlNodeList 多个节点信息类
获取xml当中的根节点
cs
XmlNode root = xml.SelectSingleNode("PlayerInfo");
再通过根节点, 去获取下面的子节点
cs
XmlNode nodeName = root.SelectSingleNode("name");
print(nodeName.InnerText);
读取属性 第一种
cs
XmlNode nodeItem =root.SelectSingleNode("money");
print(nodeItem.Attributes["id"].Value);
print(nodeItem.Attributes["num"].Value);
读取属性 第二种
cs
print(nodeItem.Attributes.GetNamedItem("id").Value);
print(nodeItem.Attributes.GetNamedItem("num").Value);
cs
XmlNodeList friendList = root.SelectNodes("weapon");
foreach(XmlNode item in friendList)
{
print(item.SelectSingleNode("id").InnerText);
print(item.SelectSingleNode("num").InnerText);
}
for(int i = 0; i < friendList.Count; i++)
{
print(friendList[i].SelectSingleNode("id").InnerText);
print(friendList[i].SelectSingleNode("num").InnerText);
}