Я пытаюсь сгенерировать C #, который создает фрагмент XML, подобный этому.
<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>
Я думал о том, чтобы использовать что-то вроде этого:
[XmlArray( "device_list" ), XmlArrayItem("item")]
public ListItem[] device_list { get; set; }
как свойство, с этим объявлением класса:
public class ListItem {
[XmlAttribute]
public string type { get; set; }
[XmlText]
public string Value { get; set; }
}
Что дает мне внутреннюю сериализацию, но я не знаю, как применить атрибут type="list"
к device_list
выше.
Я думаю (но не уверен, как написать синтаксис), что мне нужно сделать:
public class DeviceList {
[XmlAttribute]
public string type { get; set; }
[XmlArray]
public ListItem[] .... This is where I get lost
}
Обновлено на основе ответов Дейва
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; }
}
и использование в настоящее время:
[XmlArray( "device_list" ), XmlArrayItem("item")]
public DeviceList device_list { get; set; }
И тип, будучи объявленным в коде, выглядит так:
device_list = new DeviceList{type = "list"}
device_list.Add( new ListItem { type = "MAC", Value = "1234566" } );
device_list.Add( new ListItem { type = "MAC", Value = "1234566" } );
Не отображается тип при сериализации. Это результат сериализации:
<device_list>
<item type="MAC">1234566</item>
<item type="MAC">1234566</item>
</device_list>
Так, очевидно, я все еще что-то упускаю ...