C#中XML文件存储

要存储的信息

public class Item
{
    public int id;
    public int num;
}

public class PlayerInfo
{
    public string name;
    public int atk;
    public float moveSpeed;
    public Item weapon;
    public List<int> listInt;
    public List<Item> itemList;
    public Dictionary<int, Item> itemDic;
}

套路五步走(类似于在windows创建xml文件)

1、声明路径

        //声明存放路径
        string path = Application.persistentDataPath + xmlName;

2、创建文本对象

        //创建文本对象
        XmlDocument xml = new XmlDocument();

3、添加版本编码信息

        //添加版本信息
        XmlDeclaration xDec = xml.CreateXmlDeclaration("1.0", "UTF-8", "");
        //创建完成后添加进入文本对象中
        xml.AppendChild(xDec);

4、用xml中的AppendChild方法向内添加节点

重要方法AppendChild!重要方法AppendChild!重要方法AppendChild!

写法套路:例如保存weapon,先创建一个XmlElement对象,用xml.CreateElement("节点名")进行初始化。回车键空一行,将weapon先添加到PlayerInfo根节点中。再在两行代码中间书写里面存放的item。item写完也要记得存放到weapon当中。

赋值用InnerText = "string"

如果要添加属性则用SetAttribute("属性名","值");

        //创建根节点
        XmlElement playerInfo = xml.CreateElement("PlayInfo");
        xml.AppendChild(playerInfo);

        //保存name节点
        XmlElement name = xml.CreateElement("name");
        name.InnerText = this.name;
        playerInfo.AppendChild(name);

        //保存atk节点
        XmlElement atk = xml.CreateElement("atk");
        atk.InnerText = this.atk.ToString();
        playerInfo.AppendChild(atk);

        //保存moveSpeed节点
        XmlElement moveSpeed = xml.CreateElement("moveSpeed");
        moveSpeed.InnerText = this.atk.ToString();
        playerInfo.AppendChild(moveSpeed);

        //weapon
        XmlElement weapon = xml.CreateElement("weapon");
        XmlElement itemWeapon = xml.CreateElement("Item");
        itemWeapon.SetAttribute("id", 3.ToString());
        itemWeapon.SetAttribute("num", 1.ToString());
        weapon.AppendChild(itemWeapon);
        playerInfo.AppendChild(weapon);

        //listInt
        XmlElement listInt = xml.CreateElement("listInt");
        for (int i = 1; i <= this.listInt.Count; i++)
        {
            XmlElement temInt = xml.CreateElement("int");
            temInt.InnerText = i.ToString();
            listInt.AppendChild(temInt);
        }
        playerInfo.AppendChild(listInt);

        //itemList
        XmlElement itemList = xml.CreateElement("itemList");
        for (int i = 1; i <= this.itemList.Count; i++)
        {
            XmlElement temItem = xml.CreateElement("Item");
            temItem.SetAttribute("id", i.ToString());
            temItem.SetAttribute("num", 10.ToString());
            itemList.AppendChild(temItem);
        }
        playerInfo.AppendChild(itemList);

        //itemDic
        XmlElement itemDic = xml.CreateElement("itemDic");
        for (int i = 1; i <= this.itemDic.Count; i++)
        {
            XmlElement temInt = xml.CreateElement("Int");
            temInt.InnerText = i.ToString();
            XmlElement temItem = xml.CreateElement("Item");
            temItem.SetAttribute("id", i.ToString());
            temItem.SetAttribute("num", 1.ToString());
            itemDic.AppendChild(temInt);
            itemDic.AppendChild(temItem);
        }
        playerInfo.AppendChild(itemDic);

5、最后记得保存

        //保存
        xml.Save(path);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值