我正在用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();
}
}
}
}