2016-09-22 5 views
0

RestSharp 라이브러리를 사용하여 XML을 deserialize 할 때 같은 이름의 특성을 가진 중첩 요소를 포함하는 요소가있는 경우 상위 요소는 중첩 된 특성 값을 사용합니다 요소 - 어떻게 이런 일이 일어나지 않도록 할 수 있습니까?XML 역 직렬화 - 부모 요소가 자식의 특성 값을 가져 오는 중

XML을 deserialize하도록 설정 한 몇 가지 클래스 (이보다 더 크지 만이를 보여주기위한 축소 된 형식)가 있습니다. 같은 XML로

[XmlType(AnonymousType = true)] 
[XmlRoot(IsNullable = false)] 
public class Base 
{ 
    [XmlAttribute("title")] 
    public string Title { get; set; } 

    [XmlArray("base")] 
    [XmlArrayItem("foo")] 
    public List<Foo> Foos{ get; set; } 

    public Base() 
    { 
     Foos = new List<Foo>(); 
    } 
} 

[XmlType(AnonymousType = true)] 
public class Foo 
{ 
    [XmlAttribute("style")] 
    public string Style { get; set; } 

    [XmlElement("bar")] 
    public List<Bar> Bars { get; set; } 

    public Foo() 
    {   
     Bars = new List<Bar>(); 
    } 
} 

[XmlType(AnonymousType = true)] 
public class Bar 
{ 
    [XmlAttribute("style")] 
    public string Style { get; set; } 

    [XmlElement("foo")] 
    public List<Foo> Foos{ get; set; } 

    public Bar() 
    { 
     Foos = new List<Foo>(); 
    } 
} 

: 직렬화 때 Foo.Style = "bold"는하지만 Foo.Style = null을 기대하는 곳

<base> 
    <foo> 
     <bar style="bold" /> 
     <bar /> 
    </foo> 
    <foo> 
     <bar style="bold" /> 
     <bar /> 
    </foo> 
</base> 

, 내가 푸의 인스턴스를 가지고있다. 어떻게하면 부모 요소가 자식 요소의 속성 값을 가져 오지 못하게 할 수 있습니까?

+0

수업 사이에 사이클을 원하십니까? 또한'[XmlRoot ("foo")]'로'Foo '를 표시해야만 그 XML을 비 직렬화하는 방법을 보여 주시기 바랍니다. 그 후에 제대로 작동합니다.''deserialized'Foo 'null이고 두 개의'Bar'가 있는데, 처음에는 올바른'style'이 있습니다. – kiziu

+0

RestSharp 라이브러리를 사용하여 XML을 검색하고 비 직렬화합니다. 특히 [권장] (https://github.com/restsharp/RestSharp/wiki/Recommended-Usage) 메소드에서'Execute () ' – kin3tik

+0

구조의 기초를보다 명확하게 반영하도록 게시물을 업데이트했습니다. – kin3tik

답변