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。如何防止父元素获取子元素的属性值?

XML反序列化——父元素获取子元素的属性值

这似乎是RestSharp库的一个问题。

https://github.com/restsharp/RestSharp/issues/752

我还没有找到解决办法。