2

私はこの投稿を使用して辞書をxmlに変換しました:

Dictionary <string、string>をxmlに、またはその逆に変換する簡単な方法

私がしていること:

Dictionary<int, string> dicEntityRules = new Dictionary<int, string>();
// add the items to dicEntityRules    

DataContractSerializer serializer = new DataContractSerializer(dicEntityRules.GetType());

         using (StringWriter sw = new StringWriter())
         {
             using (XmlTextWriter writer = new XmlTextWriter(sw))
             {                    
                 writer.Formatting = Formatting.Indented;

                 serializer.WriteObject(writer, dicEntityRules);

                 writer.Flush();

                 sw.ToString();
             }

         }

しかし、私のxmlは次のようなものです。

<KeyValueOfintstring>
    <Key>2048</Key>
    <Value>66</Value>
  </KeyValueOfintstring>

このノード/アトリビュート名を変更できますか?

私はこのようなものが欲しいです:

     <Order>
        <entity>2048</entity>
        <rule>66</rule>
      </Order>

よろしく。

マーフィー[[|]]の

4

1 に答える 1

2

辞書を に変換し、次のようList<Order>にシリアル化します。

void Main()
{
    var dicEntityRules = new Dictionary<int, string>();

    dicEntityRules.Add(1, "One");

    // Convert to List<Order>
    var orders = dicEntityRules.Select (er => 
        new Order {entity=er.Key, rule=er.Value}).ToList();

    var serializer = new DataContractSerializer(typeof(List<Order>));

    using (var sw = new StringWriter())
    {
        using (XmlTextWriter writer = new XmlTextWriter(sw))
        {                    
            writer.Formatting = Formatting.Indented;

            serializer.WriteObject(writer, orders);

            writer.Flush();

            var s = sw.ToString();
        }
    }
}

[DataContract()]
public class Order
{
    [DataMember]
    public int entity { get; set; }
    [DataMember]
    public string rule { get; set; }
}
于 2012-04-10T20:24:33.130 に答える