繁体   English   中英

将XML反序列化为对象

[英]Deserializing XML into objects

我需要反序列化以下XML:

<?xml version="1.0" encoding="UTF-8" ?>
<event code="2wuj0ticofhzt" self="/events/2wuj0ticofhzt" revision="1260234836">
  <name>Test Event 2013</name>
  <partner-settings>
    <partner-setting>
      <registration-type code="1yfopbwhk" link="/registration-types/1yfopbwhk" />
        <personnel code="3eclag1dsrjfi">
          <free-badges>unlimited</free-badges>
        </personnel>
        <personnel code="0nxgc6mfec8yh">
          <free-badges>3</free-badges>
       </personnel>
     </partner-setting>
     <partner-setting>
       <registration-type code="1ygg67prw" link="/registration-types/1ygg67prw" />
     </partner-setting>
   </partner-settings>
</event>

这是我创建的课程。 (我只需要反序列化班级中的字段即可。):

[XmlRoot("event")]
public class Event
{
    [XmlAttribute("code")]
    public string Code { get; set; }

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

    [XmlArray("partner-settings")]
    public List<PartnerSetting> PartnerSettings { get; set; }
}

[XmlType("partner-setting")]
public class PartnerSetting
{
    [XmlElement("registration-type")]
    public RegistrationType RegistrationType { get; set; }

    [XmlArray("personnel")]
    public List<Personnel> Personnel { get; set; }
}

[XmlRoot("registration-type")]
public class RegistrationType
{
    [XmlAttribute("code")]
    public string Code { get; set; }

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

    [XmlElement("type")]
    public string Type { get; set; }
}

[XmlType("personnel")]
public class Personnel
{
    [XmlAttribute("code")]
    public string Code { get; set; }

    [XmlElement("free-badges")]
    public int FreeBadges { get; set; }
}

当前,当我反序列化上述XML时,除了从Personnel对象中可以看到2时返回0之外,所有其他功能都可以正常工作。

尝试将人员列表(即XMLArray属性,返回List)返回到伙伴设置列表时,我没有做任何不同的事情,但是由于某种原因,它不会反序列化。

您需要将属性更改为XmlElement以强制将列表中的每个元素呈现为单个XML元素:

[XmlElement("personnel")]
public List<Personnel> Personnel { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM