2016-09-22 10 views
0

При десериализации XML с использованием библиотеки RestSharp, если у меня есть элемент, содержащий вложенный элемент с атрибутом с тем же именем, родительский элемент принимает значение этого атрибута вложенного element - как я могу предотвратить это?XML Deserialization - Элемент родительского элемента, получающий значение атрибута дочернего объекта

У меня есть несколько классов (больше, чем это, но это уменьшенная форма для демонстрации), настроенных для десериализации 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>(); 
    } 
} 

с XML как:

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

Когда десериализации, у меня есть экземпляр Foo где Foo.Style = "bold" но я ожидаю Foo.Style = null. Как я могу запретить родительскому элементу принимать значение атрибута дочерних элементов?

+0

Вы уверены, что хотите пройти цикл между классами? Кроме того, пожалуйста, покажите, как именно вы десериализируете этот XML, потому что мне пришлось пометить 'Foo'' [XmlRoot ("foo")] ', чтобы заставить его работать, и после этого - он отлично работает,' style 'deserialized 'Foo 'имеет значение null, и у него есть два' '' '' '' '' '' '' '' '' бар'''', а первый имеет правильный 'style'. – kiziu

+0

Я извлекаю и десериализую XML, используя библиотеку RestSharp, в частности, следуя методу [рекомендуется] (https://github.com/restsharp/RestSharp/wiki/Recommended-Usage), где я вызываю нечто вроде 'Execute () ' – kin3tik

+0

Я обновил сообщение, чтобы более четко отразить базу структуры. – kin3tik

ответ