public class L1 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//C#读取XML的方式有以下几种
//1.XmlDocument 把数据加载到内存中,方便读取
//2.XmlTextReader 以流形式加载,内存占用更少,但是是单向只读,使用不方便
//3.Linq
//读取xml文件信息
XmlDocument xml = new XmlDocument();
//通过XmlDocument读取xml文件有以下两个API
//1.直接根据xml字符串内容来加载xml文件
TextAsset ta = Resources.Load<TextAsset>("TestXML");
print(ta.text);
xml.LoadXml(ta.text);
//2.通过xml文件的路径去进行加载
xml.Load(Application.streamingAssetsPath+"/TestXML.xml");
//读取元素和属性信息
//节点信息类 XmlNode 单个节点信息类
//节点列表信息 XmlNodeList 多个节点信息类
//获取xml当中的根节点
XmlNode root = xml.SelectSingleNode("Root");
//再通过根节点去获取下面的子节点
XmlNode nodeName = root.SelectSingleNode("name");
//获取节点包裹的元素信息
print(nodeName.InnerText);
XmlNode nodeAge = root.SelectSingleNode("age");
print(nodeAge.InnerText);
//获取属性里的信息
//1.直接通过调用Attributes[元素名].Value
XmlNode nodeItem = root.SelectSingleNode("Item");
print(nodeItem.Attributes["id"].Value);
print(nodeItem.Attributes["num"].Value);
//2.通过GetNamedItem
print(nodeItem.Attributes.GetNamedItem("id").Value);
//如果一个节点下面有多个同名节点就会使用到XmlNodeList
//获取一个节点下的同名节点
XmlNodeList friendList = root.SelectNodes("Friend");
//遍历方式一:迭代器遍历
foreach(XmlNode item in friendList)
{
//再通过friend父节点得到下面的name和age子节点,再获取里面的元素
print(item.SelectSingleNode("name").InnerText);
print(item.SelectSingleNode("age").InnerText);
}
//遍历方式二:通过for循环遍历
for(int i = 0; i < friendList.Count; i++)
{
print(friendList[i].SelectSingleNode("name").InnerText);
print(friendList[i].SelectSingleNode("age").InnerText);
}
}
}