2017-10-06 7 views
2

당신은 현재의 XML 직렬화 좀 도와 주 시겠어요 :역 직렬화 된 XML은

<ObjectList> 
    <Item Attr1="1"/> 
    <Item Attr1="2"/> 
    <DifferentItem Attr2="5"/>  
</ObjectList> 

가 나는 특성을 노력이

public class ObjectList 
{ 
    public List<Item> Items { get; set; } 
    public List<DifferentItem> DifferentItems { get; set; } 
} 

public class Item 
{ 
    public string Attr1 { get; set; } 
} 

public class DifferentItem 
{ 
    public string Attr2 { get; set; } 
} 

같은 구조를 직렬화하는하지만, 실패했습니다

[XmlArray("ObjectList")] 
[XmlArrayItem("Item", typeof(Item))] 

어떻게 해결할 수 있습니까? 감사)

답변

2

추가 속성은 :

public class ObjectList 
{ 
    [XmlElement("Item")] 
    public List<Item> Items { get; set; } 
    [XmlElement("DifferentItem")] 
    public List<DifferentItem> DifferentItems { get; set; } 
} 
0

당신은 XML 클래스와 속성 맵 XML을 돕기 위해 속성을 사용해야합니다. 다음은 XML로 작성한 콘솔 앱입니다. 구문 분석이 정상적으로 처리됩니다. XmlRoot 및 XmlElement 특성을 사용하여 매핑하는 방법에 유의하십시오.

public class Program 
{ 
    public static void Main() 
    { 
     var serializer = new XmlSerializer(typeof(ObjectList)); 
     var xml = "<ObjectList><Item Attr1=\"1\" /><Item Attr1=\"2\" /><DifferentItem Attr2=\"5\" /></ObjectList>"; 

     using (var reader = new StringReader(xml)) 
     { 
      var schedule = (ObjectList)serializer.Deserialize(reader); 
     } 
    } 

    [XmlRoot("ObjectList")] 
    public class ObjectList 
    { 
     [XmlElement("Item")] 
     public List<Item> Items { get; set; } 

     [XmlElement("DifferentItem")] 
     public List<DifferentItem> DifferentItems { get; set; } 
    } 

    public class Item 
    { 
     [XmlAttribute("Attr1")] 
     public string Attr1 { get; set; } 
    } 


    public class DifferentItem 
    { 
     [XmlAttribute("Attr2")] 
     public string Attr2 { get; set; } 
    } 
}