Sto provando a generare C# che crea un frammento di XML come questo.Come si assegna un array a un attributo durante la serializzazione in C#?
<device_list type="list">
<item type="MAC">11:22:33:44:55:66:77:88</item>
<item type="MAC">11:22:33:44:55:66:77:89</item>
<item type="MAC">11:22:33:44:55:66:77:8A</item>
</device_list>
Stavo pensando di usare qualcosa di simile:
[XmlArray("device_list"), XmlArrayItem("item")]
public ListItem[] device_list { get; set; }
come la proprietà, con questa dichiarazione di classe:
public class ListItem {
[XmlAttribute]
public string type { get; set; }
[XmlText]
public string Value { get; set; }
}
che mi dà la serializzazione interna, ma I don' so come applicare l'attributo type="list"
allo device_list
precedente.
sto pensando (ma non è sicuro di come scrivere la sintassi) che ho bisogno di fare un:
public class DeviceList {
[XmlAttribute]
public string type { get; set; }
[XmlArray]
public ListItem[] .... This is where I get lost
}
Aggiornato in base alle risposte di Dave
public class DeviceList : List<ListItem> {
[XmlAttribute]
public string type { get; set; }
}
public class ListItem {
[XmlAttribute]
public string type { get; set; }
[XmlText]
public string Value { get; set; }
}
e l'utilizzo è attualmente :
[XmlArray("device_list"), XmlArrayItem("item")]
public DeviceList device_list { get; set; }
E il tipo, pur essendo dichiarato nel codice come in tal modo:
012.device_list = new DeviceList{type = "list"}
device_list.Add(new ListItem { type = "MAC", Value = "1234566" });
device_list.Add(new ListItem { type = "MAC", Value = "1234566" });
Non mostra il tipo sulla serializzazione. Questo è il risultato della serializzazione:
<device_list>
<item type="MAC">1234566</item>
<item type="MAC">1234566</item>
</device_list>
Quindi a quanto pare mi manca ancora qualcosa ...
@ jcolebrand- È necessario aggiungere un attributo XmlElement alla proprietà ListType della classe DEVICELIST. Vedi il mio aggiornato di seguito. –
@ jcolebrand- Ecco qualche buon riferimento su serializaton XML: http://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.80).aspx –