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

时间:2016-09-22 12:58:57

标签: c# .net xml xml-serialization restsharp

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

1 个答案:

答案 0 :(得分:0)

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

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

我还没有找到解决方案。