【问题标题】:How to deserialize into a List<String> using the XmlSerializer如何使用 XmlSerializer 反序列化为 List<String>
【发布时间】:2026-02-07 22:35:01
【问题描述】:

我正在尝试将下面的 XML 反序列化到类中,将 Components 反序列化为 List&lt;string&gt;,但不知道该怎么做。反序列化器对所有其他属性都工作正常,但不是Components。有人知道怎么做吗?

<ArsAction>
  <CustomerName>Joe Smith</CustomerName>
  <LoginID>jdsmith</LoginID>
  <TicketGroup>DMS</TicketGroup>
  <Software>Visio 2007 Pro</Software>
  <Components>
    <Component>Component 1</Component>
    <Component>Component 2</Component>
  </Components>
  <Bldg>887</Bldg>
  <Room>1320p</Room>
</ArsAction>

【问题讨论】:

  • 请发布您尝试序列化和反序列化的课程。

标签: c# xml-serialization


【解决方案1】:

添加这样的属性来保存组件列表:

[XmlArray()]
public List<Component> Components { get; set; }

编辑:对不起,我看错了。您想将其读入字符串集合。我刚刚在下面尝试过,它适用于您的示例。关键是设置正确的xml序列化属性。

public class ArsAction
{
    [XmlArray]
    [XmlArrayItem(ElementName="Component")]
    public List<string> Components { get; set; }
}

【讨论】:

  • [XmlArray] 如果属性名称与标签名称相同,则为可选
  • [XmlArrayItem(ElementName="Component")] 可以缩写为 [XmlArrayItem("Component")]。在 .Net 4.0 上测试