【发布时间】:2019-01-08 07:39:00
【问题描述】:
我有一个需要用 XML 序列化它的类。下面是例子:
public class StringArray
{
public List<string> Days { get; set; }
public StringArray()
{
List<string> s = new List<string>();
s.Add("Monday");
s.Add("Tuesday");
s.Add("Wed");
Days = s;
}
}
当我以 XML 格式对其进行序列化时,结果是:
<StringArray xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Days>
<string>Monday</string>
<string>Tuesday</string>
<string>Wed</string>
</Days>
</StringArray>
但是,我需要如下结果:
<StringArray xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Days>
<Monday />
<Tuesday />
<Wed />
</Days>
</StringArray>
其实我不想显示列表项的类型。
请注意,可能的字符串集是固定的。我也尝试为此使用enum,但是XML 显示enum 类型名称而不是“字符串”,这不能解决问题。
【问题讨论】:
-
您需要使用自定义代码处理 XML 序列化。
-
你看过docs.microsoft.com/en-us/dotnet/standard/serialization/…吗?具体来说,
[XmlArrayItem("MemberName")]. -
字符串集是固定的还是可变的?例如,在示例情况下,似乎应该只有 7 天。
-
是的,它是固定的字符串集。我为此使用了 Enum,但是它显示的是枚举类型而不是“字符串”。
标签: c# xml list serialization