このブログではAffinger5を使用しています。
今回のテーマ
今回記事では、Xmlファイルの要素の追加、削除、修正し、保存する方法を解説します。
Xmlの要素を編集をしたい場合に役に立つと思うので、ぜひ最後まで読んでください。

関連記事はこちら
今回対象となるXmlファイル
今回は下記のXmlファイルを使用します。このXmlファイルに対し、内容の追加、削除、修正を行い、Xmlファイルを保存することを目的とします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?xml version="1.0" encoding="utf-8"?> <robotlists> <robotlist> <name>Rockman</name>" <maker>Dr_Light</maker>" <color>Blue</color>" </robotlist> <robotlist> <name>Rollchan</name>" <maker>Dr_Light</maker>" <color>Pink</color>" </robotlist> <robotlist> <name>Fireman</name>" <maker>Dr_Wily</maker>" <color>Red</color>" </robotlist> <robotlist> <name>Iceman</name>" <maker>Dr_Wily</maker>" <color>Blue</color>" </robotlist> <robotlist> <name>Airman</name>" <maker>Dr_Wily</maker>" <color>Blue</color>" </robotlist> </robotlists> |
要素の追加方法
早速、Xmlファイルにクイックマンの情報を追加してみましょう。
下記のソースコードを作成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System; using System.Xml.Linq; class Program { static void Main(string[] args) { var xdoc = XDocument.Load("Robot.xml"); //要素を追加 var newelement = new XElement("robotlist", new XElement("name", "Quickman"), new XElement("maker", "Dr_Wily"), new XElement("color", "Red")); xdoc.Root.Add(newelement); var xelements = xdoc.Root.Elements(); foreach (var robot in xelements) { Console.WriteLine(robot.Element("name").Value + " " + robot.Element("maker").Value + " " + robot.Element("color").Value); } } } |
出力結果
Rockman Dr_Light Blue
Rollchan Dr_Light Pink
Fireman Dr_Wily Red
Iceman Dr_Wily Blue
Airman Dr_Wily Blue
Quickman Dr_Wily Red
上記のソースコードのように要素の追加方法はAddメソッドで出来ます。
引数newelementには下記の要素を設定しており、Addメソッドで要素を追加しています。
1 2 3 4 5 |
<robotlist> <name>Quickman</name> <maker>Dr_Wily</maker> <color>Red</color> </robotlist> |
先頭に追加したい場合は、AddFirstメソッドを使用します。
要素の削除方法
要素の削除方法にはRemoveメソッドを使用します。この例のようにLinqで対象となる要素を抽出して削除することが出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Xml.Linq; using System.Linq; class Program { static void Main(string[] args) { var xdoc = XDocument.Load("Robot.xml"); //要素を追加 var xelements = xdoc.Root.Elements().Where(n => n.Element("name").Value == "Fireman"); xelements.Remove(); foreach (var robot in xdoc.Root.Elements()) { Console.WriteLine(robot.Element("name").Value + " " + robot.Element("maker").Value + " " + robot.Element("color").Value); } } } |
出力結果
Rockman Dr_Light Blue
Rollchan Dr_Light Pink
Iceman Dr_Wily Blue
Airman Dr_Wily Blue
条件に一致した要素を見つけ、その要素を削除しています。この例ではファイヤーマンの要素が消えています。
要素を置き換える
要素を置き換えるにはReplaceWithメソッドを使用します。ファイヤーマンをクイックマンにしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System; using System.Xml.Linq; using System.Linq; class Program { static void Main(string[] args) { var xdoc = XDocument.Load("Robot.xml"); //要素を追加 var newelement = new XElement("robotlist", new XElement("name", "Quickman"), new XElement("maker", "Dr_Wily"), new XElement("color", "Red")); var element = xdoc.Root.Elements().FirstOrDefault(n => n.Element("name").Value == "Fireman"); element.ReplaceWith(newelement); var xelements = xdoc.Root.Elements(); foreach (var robot in xelements) { Console.WriteLine(robot.Element("name").Value + " " + robot.Element("maker").Value + " " + robot.Element("color").Value); } } } |
出力結果
Rockman Dr_Light Blue
Rollchan Dr_Light Pink
Quickman Dr_Wily Red
Iceman Dr_Wily Blue
Airman Dr_Wily Blue
FirstOrDefaultメソッドで置き換える要素を抽出し、その要素に対しReplaceWithメソッドで要素を置き換えています。
FirstOrDefaultメソッドについてはこちら
こちらもCHECK
-
-
C# Linqは便利なので使い方を覚えよう。Count、SequenceEqual、FirstOrDefault、LastOrDefaultメソッドを解説します。
このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんばんは、サルモリです。 今回は下記の記事の続きです。 CHECK 今回のテーマ Lin ...
続きを見る

Xmlファイルの保存
最後に修正した要素を新しいXmlファイルに保存してみましょう。
保存にはSaveメソッドを使用します。下記のソースコードをみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Xml.Linq; using System.Linq; class Program { static void Main(string[] args) { var xdoc = XDocument.Load("Robot.xml"); //要素を追加 var newelement = new XElement("robotlist", new XElement("name", "Quickman"), new XElement("maker", "Dr_Wily"), new XElement("color", "Red")); var element = xdoc.Root.Elements().FirstOrDefault(n => n.Element("name").Value == "Fireman"); element.ReplaceWith(newelement); var xelements = xdoc.Root.Elements(); xdoc.Save("newRobot.xml", SaveOptions.DisableFormatting); } } |
newRobot.xml
<?xml version="1.0" encoding="utf-8"?><robotlists><robotlist><name>Rockman</name>"
<maker>Dr_Light</maker>"
<color>Blue</color>"
</robotlist><robotlist><name>Rollchan</name>"
<maker>Dr_Light</maker>"
<color>Pink</color>"
</robotlist>
<robotlist><name>Quickman</name><maker>Dr_Wily</maker><color>Red</color></robotlist><robotlist><name>Iceman</name>"
<maker>Dr_Wily</maker>"
<color>Blue</color>"
</robotlist><robotlist><name>Airman</name>"
<maker>Dr_Wily</maker>"
<color>Blue</color>"
</robotlist></robotlists>
Saveメソッドでxmlの保存が出来ました。Saveメソッドの第2引数にDisableFormattingを指定すると、空白文字を取り除きます。
まとめ
今回はXmlファイルの編集方法と保存方法の解説をしました。
C#では、Linq to Xmlを使用することでXmlファイル修正が簡単にできます。
他にも使い方を紹介していくので、楽しみにしてください。

こちらの記事も関連しているので良ければみてください。
こちらもCHECK
-
-
C# Linq Xmlファイルの読み込み方法 Root.Elementsを使用して、Linqも使用できる型にしよう。Load、Root.Elements
このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんにちは、サルモリです。 今回はXmlファイルを読み込んでLinqで好きな形にしていこう ...
続きを見る
こちらもCHECK
-
-
C# Linq Xmlファイルの読み込んだ内容を保持する方法2選 匿名クラスで保持する方法とクラスを作成して保持する方法 Selectメソッドを使用すると簡単です。
このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんにちは、サルモリです。今回のテーマはXmlファイルを読み込んだ後に内容を保持する方法を ...
続きを見る
ファイルについての記事はこちら