.net XmlSerializer 记录与元素

.net XmlSerializer record vs. element

我试图影响 XmlSerializer 来创建这个简单的输出:

<ListOfStuff>
    <PropertyList>
         <Datum qualifier="areaType">square</Datum>
         <Datum qualifier="color">red</Datum>
    </PropertyList>
</ListOfStuff>    

我的物品是这样装饰的:

public class ListOfStuff
{     
    [XmlElement]
    public PropertyList PropertyList { get; set; }        
}

public class PropertyList
{
    [XmlElement]
    public List<Datum> Datum { get; set; }
}

public class Datum
{
    [XmlAttribute]
    public string qualifier { get; set; }
}

但序列化程序输出似乎将我的 Datum 元素解释为记录而不是包含数据的元素(缺少值“square”和“red”)。

<ListOfStuff>
    <PropertyList>
                 <Datum qualifier="areaType" />
                 <Datum qualifier="color" />
   </PropertyList>
</ListOfStuff>

我是否需要应用其他属性来使序列化程序更加清晰?

您可以使用 [XmlText] 属性将 <Datum> 元素的值绑定到 Datum class 中的字符串值 属性:

public class Datum
{
    [XmlAttribute]
    public string qualifier { get; set; }

    [XmlText]
    public string Value { get; set; }
}

示例 fiddle.