При десериализации 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
. Как я могу запретить родительскому элементу принимать значение атрибута дочерних элементов?
Вы уверены, что хотите пройти цикл между классами? Кроме того, пожалуйста, покажите, как именно вы десериализируете этот XML, потому что мне пришлось пометить 'Foo'' [XmlRoot ("foo")] ', чтобы заставить его работать, и после этого - он отлично работает,' style 'deserialized 'Foo 'имеет значение null, и у него есть два' '' '' '' '' '' '' '' '' бар'''', а первый имеет правильный 'style'. – kiziu
Я извлекаю и десериализую XML, используя библиотеку RestSharp, в частности, следуя методу [рекомендуется] (https://github.com/restsharp/RestSharp/wiki/Recommended-Usage), где я вызываю нечто вроде 'Execute() ' –
kin3tik
Я обновил сообщение, чтобы более четко отразить базу структуры. – kin3tik