2012-04-10 6 views
2

Ich habe diesen Beitrag verwendet mein Wörterbuch zu xml konvertieren:ändern Knoten/Attributnamen eines konvertierten Wörterbuch (C#) zu XML

Easy way to convert a Dictionary<string, string> to xml and visa versa

Was ich tue:

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(); 
      } 

     } 

Aber ist mein xml wie folgt aus:

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

Kann ich ändern, um diese Knoten/atribute Namen?

würde ich einige, wie dies mag:

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

Grüße.

murphy [[|]] 's

+0

auch den Code für die Konvertierung hinterlassen bitte – Habib

+0

gepostet Habib. Ist das, worum bitten Sie? – Eduardo

Antwort

2

Wandeln Sie Ihr Wörterbuch zu einem List<Order> und serialisiert werden:

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; } 
}