2012-08-31 209 views
0

我可以使用反序列化從xml生成不是由序列化生成的對象嗎?使用非序列化的xml文件進行反序列化

說,如果我有這樣的

<Person> 
    <Cop name ="n1" /> 
    <Cop name ="n2" /> 
</Person> 

我可以反序列化作爲對象的人與IEnumberable一個xml文件?或者我需要使用IEnumerable屬性序列化Object Person,然後進行反序列化?

回答

0

當然,您可以反序列化尚未通過序列化生成的XML,您只需確保使用適合的屬性生成或編寫正確的類結構以匹配XML結構。我不確定IEnumerable是可能的,但可以使用List<T>T[]。以下是具有List<T>樣品:

  string xml = @"<Person> 
    <Cop name =""n1"" /> 
    <Cop name =""n2"" /> 
</Person>"; 


      XmlSerializer ser = new XmlSerializer(typeof(Person)); 

      Person p1 = (Person)ser.Deserialize(new StringReader(xml)); 

      foreach (Cop cop in p1.Cops) 
      { 
       Console.WriteLine(cop.Name); 
      } 
     } 
    } 



    public class Person 
    { 
     [XmlElement(ElementName="Cop")] 
     public List<Cop> Cops { get; set; } 
    } 

    public class Cop 
    { 
     [XmlAttribute(AttributeName="name")] 
     public string Name { get; set; } 
    } 

輸出

n1 
n2