C#读取XML

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);
        }
    }
}
posted @ 2025-03-24 16:09  cannedmint  阅读(69)  评论(0)    收藏  举报