繁体   English   中英

如何将这个xml数组序列化为类中的属性?

[英]How can I serialize this xml array to a property in my class?

[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 opcion。 在这种情况下,它确实可以工作并正确分配了其他节点,但ArrayList除外,它返回了count = 0。

您可以按以下方式修改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; }
    }
}

另外,您应该List<Opcion>替换ArrayList

    private List<Opcion> opcion;

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

笔记:

样品提琴

暂无
暂无

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

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