尝试更新XML文件中的值的System.NullReferenceException问题

时间:2019-06-27 09:59:26

标签: c# xml

我正在用C#制作控制台RPG游戏,其属性存储在XML文件中。开始一个新游戏,要求用户键入名称,然后在一个名为“ player.xml”的XML文件中创建一个带有用户名和某些属性的节点。然后,要求用户选择将与他一起玩的三个字符之一。字符数据存储在“ character.xml”中。之后,来自“ character.xml”的这些属性替换了来自“ player.xml”的一些属性,这些属性最初为“ 0”。也就是说,用户选择了一个字符及其一些属性。但是,更新存在问题。 Program.cs没有看到任何节点'player.xml'。

用户输入将要播放的角色的名称。然后,我介绍“ character.xml”,并执行一条foreach语句,将程序扔到节点和中的元素。然后,我用if语句检查节点的值是否等于用户键入的值。然后,使用另一个foreach语句,将程序扔到节点内部和“ player.xml”中的元素上,然后尝试使用已写入字符属性的变量更新“ player.xml”中节点的值。它显示了'='符号左侧的空值。

if (CharacterSelect == "Боец" || CharacterSelect == "Стрелок" || CharacterSelect == "Маг")
{
    XDocument xdoc = XDocument.Load("character.xml");
    XElement xroot = xdoc.Element("root");
    foreach (XElement xe in xroot.Elements("character").ToList())
    {
        if (xe.Element("name").Value == CharacterSelect)
        {
            XDocument xdoc1 = XDocument.Load("player.xml");
            XElement xroot1 = xdoc1.Element("root");
            foreach (XElement xe1 in xroot1.Elements("player").ToList())
            {
                xe1.Element("character").Value = CharacterSelect;
                xe1.Element("damage").Value = Convert.ToString(DamageCharacter);
                xe1.Element("skill").Value = Convert.ToString(SkillCharacter);
                xe1.Element("mana").Value = Convert.ToString(ManaCharacter);
                xe1.Element("cash").Value = Convert.ToString(CashCharacter);

                Program program = new Program();
                program.SecMenu();
            }
        }
    }
}

the pic where i hope something is obvious

0 个答案:

没有答案