2012-03-25 73 views
1

我有這樣的XML如何序列化的XML類列表

<KitContent> 
    <MsiData> 
    <FileName>file1</FileName> 
    <BaseProductVersion>1.1.0.0</BaseProductVersion> 
    </MsiData> 
    <MsiData> 
    <FileName>file2</FileName> 
    <BaseProductVersion>1.1.0.0</BaseProductVersion> 
    </MsiData> 
</KitContent> 

我想它序列化到一個類 如何類應該是什麼樣子?

public class KitContent 
{ 
    public List<MsiData> ???? { get; set; } 

    public KitContent() 
    { 
     ??? = new List<MsiData>(); 
    } 
} 


public class MsiData 
{ 
    public string FileName { get; set; } 
    public string BaseProductVersion { get; set; } 
} 

}

的 '???'我在上面的課是我的問題

回答

1

我不知道你想要什麼,但???可以是任何標識符。如果你想將這個xml解析成C#類,恕我直言,最好的辦法是使用Xml.Serialization命名空間。

這裏是例子:

class Program 
    { 
     static void Main(string[] args) 
     { 
      string xml = "<KitContent>" + 
          "<MsiData>" + 
          "<FileName>file1</FileName>" + 
          "<BaseProductVersion>1.1.0.0</BaseProductVersion>" + 
          "</MsiData>" + 
          "<MsiData>" + 
          "<FileName>file2</FileName>" + 
          "<BaseProductVersion>1.1.0.0</BaseProductVersion>" + 
          "</MsiData>" + 
         "</KitContent>"; 

      XmlSerializer serializer = new XmlSerializer(typeof(KitContent)); 
      KitContent kitContent = (KitContent)serializer.Deserialize(XmlReader.Create(new StringReader(xml))); 

      Console.WriteLine(kitContent.anyIdentifier[0].FileName); 
      Console.WriteLine(kitContent.anyIdentifier[0].OtherName); 
      Console.WriteLine(kitContent.anyIdentifier[1].FileName); 
      Console.WriteLine(kitContent.anyIdentifier[1].OtherName); 
     } 
    } 

    [XmlRoot("KitContent")] 
    public class KitContent 
    { 
     [XmlElement("MsiData")] 
     public List<MsiData> anyIdentifier { get; set; } 
    } 

    public class MsiData 
    { 
     public string FileName { get; set; } 

     [XmlElement("BaseProductVersion")] 
     public string OtherName { get; set; } 
    } 

如果你的屬性名相同元素在XML中,你不需要把屬性放在屬性。