LINQ to XMLでの属性の削除について.
過去の内容は以下から見れます。よろしければご参照くださいませ。
XElement, XAttributeには、属性の削除を行うためのメソッドがいくつか存在します。
XAttribute.Remove XElement.SetAttributeValue XElement.RemoveAttributes
SetAttributeValueメソッドは、SetElementValueメソッドと
同じ動きをします。
- 属性が存在しない場合、新規追加される
- 属性が存在する場合、更新される
- 値としてnullを指定すると、削除される
以下、サンプルです。
#region LinqSamples-67 /// <summary> /// LINQ to XMLのサンプルです. /// </summary> /// <remarks> /// 属性削除系メソッドのサンプルです. /// </remarks> public class LinqSamples67 : IExecutable { public void Execute() { // // XAttribute.Remove // 現在の属性を削除する. // var root = BuildSampleXml(); var elem = root.Elements("Child").First(); var attr = elem.Attribute("Id"); attr.Remove(); // // 削除後の属性に値を設定しても、反映されない. // attr.Value = "999"; Console.WriteLine(root); Console.WriteLine("====================================="); // // SetAttributeValue // 属性の値を設定するメソッドであるが // 値にnullを指定することで、属性を削除することができる. // root = BuildSampleXml(); elem = root.Elements("Child").First(); elem.SetAttributeValue("Id", null); Console.WriteLine(root); Console.WriteLine("====================================="); // // RemoveAttributes // 現在の要素に存在する属性を全て削除する. // root = BuildSampleXml(); elem = root.Elements("Child").First(); elem.RemoveAttributes(); Console.WriteLine(root); Console.WriteLine("====================================="); } XElement BuildSampleXml() { return XElement.Parse("<Root><Child Id=\"100\" Id2=\"200\"><Value Id=\"300\">hoge</Value></Child></Root>"); } } #endregion
実行すると以下のようになります。
===================================== hoge ===================================== hoge ===================================== hoge
以下、参考リソースです.
- XAttribute.Remove メソッド
- XElement.SetAttributeValue メソッド
- XElement.RemoveAttributes メソッド
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場