0

最近、同様の質問をしましたが、提案されたソリューションに問題があったため、今回はサンプル コードで少し異なる言い方をしています。ゲームのプレーヤーのデータを格納する 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」、および「Balance」を最初または最後として参照せずに変更するにはどうすればよいですか? LINQ や XML のシリアル化などを使用する前にいくつかの提案をもらいましたが、問題が発生し、LINQ はまだ理解できません。私は本当に XmlDocument bc を使いたいと思っています。私は C# を初めて使用するので、上記のコードをできるだけ多く使用すると、可能であれば私の人生がずっと楽になります。ありがとう、

4

1 に答える 1

0

次のようにできると思います:

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

ドキュメントはこちら。

于 2013-05-19T21:47:42.603 に答える