gpt4 book ai didi

c# - XMLSerializer 并使用属性创建 XML 数组

转载 作者:行者123 更新时间:2023-12-02 21:50:24 26 4
gpt4 key购买 nike

我正在尝试创建一个可以通过 XMLSerializer 序列化为 XML 的类。

目标 XML 应该如下所示

<subject_datas type="array">
<subject_data>
...
</subject_data>
<subject_data>
...
</subject_data>
</subject_datas>

问题在于 subject_datas 标记的类型属性。我尝试的是将其设计为派生列表,并附加一个带有 XMLAttribute 属性的属性,如下所示

[XmlRoot(ElementName = "subject_datas")]
public class SubjectDatas : List<SubjectData>
{
public SubjectDatas (IEnumerable<SubjectData> source)
{
this.AddRange(source);
Type = "array";
}

[XmlAttribute(AttributeName = "type")]
public string Type { get; set; }
}

但是因为该类是一个 Collection,所以 XMLSerializer 将仅序列化 Collection 中的对象,而不是 Collection 本身。所以我的 Type 属性被忽略:(

最佳答案

您可以使用组合而不是继承

    [XmlRoot(ElementName = "subject_datas")]
public class SubjectDatas
{
[XmlElement(ElementName = "subject_data")]
public List<SubjectData> SubjectDatas2 { get; set; }

public SubjectDatas(IEnumerable<SubjectData> source)
{
SubjectDatas2= new List<SubjectData>();
this.SubjectDatas2.AddRange(source);
Type = "array";
}

private SubjectDatas()
{
Type = "array";
}

[XmlAttribute(AttributeName = "type")]
public string Type { get; set; }
}

关于c# - XMLSerializer 并使用属性创建 XML 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18746695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com