在 C 语言中将字符串列表/数组转换为单个 XML 属性#

List/Array of strings to a single XML attribute in C#

提问人:monty 提问时间:10/31/2023 最后编辑:monty 更新时间:10/31/2023 访问量:50

问:

是否有任何XML属性可以将集合(如或普通数组)序列化为单个XML属性?System.XML.SerializationList<string>string[]

例如:

public class Test
{

   [XmlAttribute(AttributeName = "name")]
   public string Name { get; set; }

   // ???
   public List<string> Values { get; set; } = new List<string>();
}

Test test = new Test 
{
  Name = "foo",
  Values = new List<string>() { "a", "b", "c" }
}

应序列化为 XML

<Test name="foo" values="a b c" />

我们经常有这个用例,因为 “HTML 也可以,例如类属性”

C# .NET XML

评论


答:

1赞 MakePeaceGreatAgain 10/31/2023 #1

不是直接的,但为什么不创建用于序列化的计算属性呢?

public class Test
{

    [XmlAttribute("name")]
    public string Name { get; set; }

    [XmlIgnore] public List<string> Values { get; set; } = new List<string>();
    [XmlAttribute("values")]
    public string SerValues 
    {
        get => string.Join(" ", Values);
        set => Values = value.Split().ToList();
    }
}

当然,您应该提供一些检查。null