XML反序列化——父元素获取子元素的属性值
本文关键字:元素 属性 获取 XML 反序列化 | 更新日期: 2023-09-27 18:08:13
当使用RestSharp库对XML进行反序列化时,如果我有一个元素包含一个具有同名属性的嵌套元素,那么父元素将采用嵌套元素的该属性值—如何防止这种情况发生?
我设置了几个类(比这个大,但这是一个简化的形式来演示)来反序列化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
。如何防止父元素获取子元素的属性值?
这似乎是RestSharp库的一个问题。
https://github.com/restsharp/RestSharp/issues/752我还没有找到解决办法。