C#存储XML

public class L2 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //决定存储的文件夹
        //存储xml文件一定要存储在各平台都可读可写可找到的路径中
        //1.Resources 可读不可写,打包后找不到,所以不能存储
        //2.Application.StreamingAssetsPath 可读,可以找到,但只有PC可写,所以不能存储
        //3.Application.dataPah 打包后找不到,所以不能存储
        //4.Application.persistentDataPath 可读可写找得到,所以存储在这里

        //确定存储路径
        string path = Application.persistentDataPath + "/PlayerInfo.xml";
        print(Application.persistentDataPath);

        //存储xml文件
        //XmlDocument用于创建节点存储文件
        //XmlDeclaration用于添加版本信息和编码
        //XmlElement节点类

        //存储有5步
        //1.创建文本对象
        XmlDocument xml = new XmlDocument();

        //2.添加固定信息
        //创建完固定信息
        XmlDeclaration xmlDec = xml.CreateXmlDeclaration("1.0", "UTF-8", "");
        //创建完固定信息之后,要把固定信息加入xml文本
        xml.AppendChild(xmlDec);

        //3.添加根节点
        //创建根节点
        XmlElement root = xml.CreateElement("Root");
        //创建完根节点后,把根节点加入xml文本
        xml.AppendChild(root);

        //4.为根节点添加子节点
        //创建子节点
        XmlElement name = xml.CreateElement("Name");
        //给子节点添加信息
        name.InnerText = "robot";
        //创建完子节点后,把子节点加到根节点下
        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 intNode = xml.CreateElement("Int");
            intNode.InnerText = i.ToString();
            ListInt.AppendChild(intNode);
        }
        root.AppendChild(ListInt);

        XmlElement itemList = xml.CreateElement("itemList");
        XmlElement item = xml.CreateElement("Item");
        //为子节点添加属性
        item.SetAttribute("id",1.ToString());
        item.SetAttribute("num", 1.ToString());
        itemList.AppendChild(item);
        root.AppendChild(itemList);

        //5.保存
        xml.Save(path);

        //修改xml文件
        //1.先判断文件是否存在
        if(File.Exists(path))
        {
            //2.加载后直接修改即可
            XmlDocument newXml = new XmlDocument();
            newXml.Load(path);

            //移除节点
            //寻找子节点的两种方法
            //1.
            XmlNode node = newXml.SelectSingleNode("Root").SelectSingleNode("atk");
            //2.
            //node = newXml.SelectSingleNode("Root/atk");

            XmlNode root2 = newXml.SelectSingleNode("Root");
            //移除子节点的方法
            root2.RemoveChild(node);

            XmlElement hp = newXml.CreateElement("hp");
            hp.InnerText = "100";
            root2.AppendChild(hp);

            //修改完之后进行保存
            newXml.Save(path);
        }
    }
}
posted @ 2025-03-24 16:49  cannedmint  阅读(55)  评论(0)    收藏  举报