如何用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#新手,所以尽可能多地使用上面的代码会让我的生活更轻松。谢谢你,
我相信你可以这样做:
player["WinCount"].InnerText = Form1.winCount.ToString();
player["PlayCount"].InnerText = Form1.playCount.ToString();
player["Balance"].InnerText = Form1.decBalance.ToString();
文档。