Tôi đang cố gắng tạo C# tạo ra một đoạn XML như thế này.Làm thế nào để cung cấp cho một mảng một thuộc tính trong quá trình tuần tự hóa trong 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>
Tôi đã nghĩ đến việc sử dụng một cái gì đó như thế này:
[XmlArray("device_list"), XmlArrayItem("item")]
public ListItem[] device_list { get; set; }
như bất động sản, với khai báo lớp này:
public class ListItem {
[XmlAttribute]
public string type { get; set; }
[XmlText]
public string Value { get; set; }
}
nào mang lại cho tôi serialization bên trong, nhưng tôi don' t biết cách áp dụng thuộc tính type="list"
cho số device_list
ở trên.
Tôi đang nghĩ (nhưng không chắc chắn làm thế nào để viết cú pháp) mà tôi cần phải làm một:
public class DeviceList {
[XmlAttribute]
public string type { get; set; }
[XmlArray]
public ListItem[] .... This is where I get lost
}
cập nhật dựa trên phản ứng của 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; }
}
và việc sử dụng hiện nay là :
[XmlArray("device_list"), XmlArrayItem("item")]
public DeviceList device_list { get; set; }
Và loại, khi được khai báo trong mã như sau:
device_list = new DeviceList{type = "list"}
device_list.Add(new ListItem { type = "MAC", Value = "1234566" });
device_list.Add(new ListItem { type = "MAC", Value = "1234566" });
Không hiển thị loại trên tuần tự hóa. Đây là kết quả của serialization:
<device_list>
<item type="MAC">1234566</item>
<item type="MAC">1234566</item>
</device_list>
Vì vậy, rõ ràng là tôi vẫn đang thiếu một cái gì đó ...
@ jcolebrand- Bạn cần phải thêm một thuộc tính XmlElement đến tài sản ListType của lớp DeviceList. Xem cập nhật của tôi dưới đây. –
@ jcolebrand- Đây là một số tài liệu tham khảo tốt về XML serializaton: http://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.80).aspx –