如何用c#更新XML文档中的特定值

本文关键字:文档 何用 更新 XML | 更新日期: 2023-09-27 18:14:16

我最近问了一个类似的问题,但对建议的解决方案有问题,所以这次我用示例代码稍微改变一下措辞。我有一个为游戏玩家存储数据的XML文件。我只需要定期从这个XML文件中找到一个玩家,并在特定玩家玩游戏时更新他的相关数据:

    <?xml version="1.0"?>
<PlayerStats xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <Player>
    <Name>Jack</Name>
    <WinCount>3</WinCount>
    <PlayCount>9</PlayCount>
    <Balance>500</Balance>
  </Player>
  <Player>
    <Name>John</Name>
    <WinCount>3</WinCount>
    <PlayCount>9</PlayCount>
    <Balance>940</Balance>
  </Player>
</PlayerStats>

我需要代码来识别特定的玩家(例如,John)并基于c#变量更新Wincount, Playcount和Balance数字。以下是我正在使用的一些示例c#代码:

    XmlDocument doc = new XmlDocument();
    doc.Load(xmlfilepath);
    XmlNode player;
    XmlNode root = doc.DocumentElement;
    // below correctly pulls data for the specific player
    player = root.SelectSingleNode("descendant::Player[Name='"+Form1.strPlayerName+"']"); 
   // the "inner xml" for player = "<Name>John</Name><WinCount>3</WinCount><PlayCount>9</PlayCount><Balance>940</Balance>"
    // since "Balance" was last, I tried using "LastChild" and the code below worked
    player.LastChild.InnerText = Form1.decBalance.ToString();  //updates balance succesfully 
    doc.Save(xmlfilepath);

所以这适用于"LastChild",但我如何改变"Wincount","PlayCount"answers"Balance"而不引用它们作为第一个或最后一个?在使用LINQ和XML序列化等之前,我得到了一些建议,但它们造成了问题,我还不懂LINQ。我真的想使用XmlDocument bc,我觉得这段代码是95%的方式,我错过了一些容易的东西。我是c#新手,所以尽可能多地使用上面的代码会让我的生活更轻松。谢谢你,

如何用c#更新XML文档中的特定值

我相信你可以这样做:

player["WinCount"].InnerText = Form1.winCount.ToString();
player["PlayCount"].InnerText = Form1.playCount.ToString();
player["Balance"].InnerText = Form1.decBalance.ToString();

文档。