【Unity数据持久化】C#读取Xml文件的元素、属性等信息

1.读取XML文件信息

C#读取XML的方法有几种?
1.XmlDocument (把数据加载到内存中,方便读取)
2.XmlTextReader (以流形式加载,内存占用更少,但是是单向只读,使用不是特别方便,除非有特殊需求,否则不会使用)
3.Linq

使用XmlDocument类读取是较方便最容易理解和操作的方法

主要使用的类:XmlDocument
需要引用命名空间:using System.Xml;

using System.Collections;
using System.Collections.Generic;
using System.Xml;
using UnityEngine;
public class LoadXml : MonoBehaviour
{
    void Start()
    {
        XmlDocument xml = new XmlDocument();
        //通过XmlDocument读取XML文件 有两个API
        //1.直接根据XML字符串内容来加载XML文件
        //  加载Resorces文件夹下的XML文件
        TextAsset asset = Resources.Load<TextAsset>("TestXml");
        //  然后就可以通过asset.text的到文本中的内容了
        print(asset.text);
        xml.LoadXml(asset.text);
        //2.通过XML文件的路径来加载
        // (无法从Resources中加载,因为他的路径是会变的)
        xml.Load(Application.streamingAssetsPath + "/TestXml.xml");
    }
}

2.读取元素和属性信息

被读取的XML:
在这里插入图片描述
两个关键的类:
XmlNode 单个节点信息类
XmlNodeList 多个节点信息类

using System.Collections;
using System.Collections.Generic;
using System.Xml;
using UnityEngine;
public class LoadXml : MonoBehaviour
{
    void Start()
    {
        XmlDocument xml = new XmlDocument();
        xml.Load(Application.streamingAssetsPath + "/TestXml.xml");
        //1.得到节点信息
        //  获取XML中的根节点
        XmlNode root = xml.SelectSingleNode("Root");
        //  再通过跟节点去获取下面的子节点
        XmlNode nodeName = root.SelectSingleNode("name");
        //  获取节点中包裹的内容
        print(nodeName.InnerText); //打印:啊哈

        //  如果想得到Root下的所有子节点呢(因为有两个Friend是重复的)
        XmlNodeList friendList = root.SelectNodes("Friend");
        //  通过遍历这个List就可以得到其中的所有子节点了
        foreach (XmlNode item in friendList)
        {
            print(item.SelectSingleNode("name").InnerText);
            print(item.SelectSingleNode("age").InnerText);
        }

        //2.得到属性信息
        XmlNode nodeItem = root.SelectSingleNode("Item");
        //  通过属性的名字得到属性的值
        print(nodeItem.Attributes["id"].Value);  //打印:1
        //  有点麻烦的一种方法(仅作了解)
        print(nodeItem.Attributes.GetNamedItem("id").Value);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值