読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

Linq入門記-72 (LINQ to XML, 属性の置換, ReplaceAttributes)

LINQ to XMLでの属性の置換について.

過去の内容は以下から見れます。よろしければご参照くださいませ。


XElementには、属性の置換を行うためのメソッドがいくつか存在します。

XElement.ReplaceAttributes(object)
XElement.ReplaceAttributes(object[])


以下、サンプルです。

  #region LinqSamples-68
  /// <summary>
  /// LINQ to XMLのサンプルです.
  /// </summary>
  /// <remarks>
  /// 属性置換系メソッドのサンプルです.
  /// </remarks>
  public class LinqSamples68 : IExecutable
  {
    public void Execute()
    {
      // 
      // ReplaceAttributes
      //   現在の要素に付属している属性を一括で置換する。
      //   ノードの置換に利用するReplaceNodesメソッドと同じ要領で
      //   利用できる。(クエリを利用しながら、置換用のシーケンスを作成する)
      //   
      var root = BuildSampleXml();
      var elem = root.Elements("Child").First();
      
      elem.ReplaceAttributes
        (
          from   attr in elem.Attributes()
          where  attr.Name.ToString().EndsWith("d")
          select new XAttribute(string.Format("{0}-Update", attr.Name), attr.Value)
        );
      
      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
    
  
  =====================================


以下、参考リソースです.

================================
過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。