【问题标题】:How can I serialize this xml array to a property in my class?如何将此 xml 数组序列化为我的类中的属性?
【发布时间】:2017-09-16 06:50:15
【问题描述】:
[Serializable]
public class CampoAuxiliar
{
    private string descripcionAuxiliar;
    private DateTime fechaAuxiliar;
    private ArrayList opcion;

    public CampoAuxiliar() { }

    [XmlElement(ElementName = "descripcionAuxiliar", Type = typeof(string))]
    public string DescripcionAuxiliar
    {
        get { return descripcionAuxiliar; }
        set { descripcionAuxiliar = value; }
    }

    [XmlElement(ElementName = "fechaHabilitacion", Type = typeof(DateTime))]
    public DateTime FechaAuxiliar
    {
        get { return fechaAuxiliar; }
        set { fechaAuxiliar = value; }
    }

    [XmlArrayItem(ElementName = "opcion", Type = typeof(Opcion))]
    [XmlArray(ElementName = "AuxiliarA")]
    public ArrayList Opcion
    {
        get { return opcion; }
        set { opcion = value; }
    }
}

这是我的xml

- <auxiliarA>
  <descripcionAuxiliar>Campo A</descripcionAuxiliar> 
  <fechaHabilitacion>2017-04-19</fechaHabilitacion> 
+ <opcion>
  <codigoOpcion>01</codigoOpcion> 
  <descripcionOpcion>1</descripcionOpcion> 
  </opcion>
+ <opcion>
  <codigoOpcion>02</codigoOpcion> 
  <descripcionOpcion>2</descripcionOpcion> 
  </opcion>
+ <opcion>
  <codigoOpcion>03</codigoOpcion> 
  <descripcionOpcion>3</descripcionOpcion> 
  </opcion>
</auxiliarA>

我的问题是我不知道如何将“opcion”数组序列化为类的 ArrayList 选项。 在这种情况下,它确实可以正常工作并正确分配其他节点,除了返回我 count = 0 的 ArrayList 节点。

【问题讨论】:

  • 您是否尝试过使用 [XmlElement(ElementName ="opcion")] 简单地装饰 Opcion 属性?它对我有用。
  • 天哪,这成功了!非常感谢,我整天都在努力解决它,除了显而易见的事情之外,我什么都尝试了。再次感谢您!

标签: c# arrays xml serialization arraylist


【解决方案1】:

您可以如下修改您的CampoAuxiliar 类:

[XmlRoot("auxiliarA")]
[XmlType("auxiliarA")]
public class CampoAuxiliar
{
    private string descripcionAuxiliar;
    private DateTime fechaAuxiliar;

    public CampoAuxiliar() { }

    [XmlElement(ElementName = "descripcionAuxiliar", Type = typeof(string))]
    public string DescripcionAuxiliar
    {
        get { return descripcionAuxiliar; }
        set { descripcionAuxiliar = value; }
    }

    [XmlElement(ElementName = "fechaHabilitacion", Type = typeof(DateTime))]
    public DateTime FechaAuxiliar
    {
        get { return fechaAuxiliar; }
        set { fechaAuxiliar = value; }
    }

    private ArrayList opcion;

    [XmlElement("opcion", Type = typeof(Opcion))]
    public ArrayList Opcion
    {
        get { return opcion; }
        set { opcion = value; }
    }
}

此外,您应该ArrayList 替换为List&lt;Opcion&gt;

    private List<Opcion> opcion;

    [XmlElement("opcion")]
    public List<Opcion> Opcion
    {
        get { return opcion; }
        set { opcion = value; }
    }

注意事项:

示例fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    相关资源
    最近更新 更多