如何将此xml数组序列化到我的类中的属性?

时间:2017-04-19 20:57:51

标签: c# arrays xml serialization arraylist

[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>

我的问题是我无法弄清楚如何序列化&#34; opcion&#34;数组进入类的ArrayList opcion。 在这种情况下,它可以正常工作并正确分配其他节点,但ArrayList会返回给我count = 0。

1 个答案:

答案 0 :(得分: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; }
    }
}

此外,您ArrayList替换为List<Opcion>

    private List<Opcion> opcion;

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

注意:

示例fiddle