Tôi có một tài liệu XML tương tự như sau:Sử dụng XmlSerializer với một mảng trong phần tử gốc
<scan_details>
<object name="C:\Users\MyUser\Documents\Target1.doc">
...
</object>
<object name="C:\Users\MyUser\Documents\Target2.doc">
...
</object>
...
</scan_details>
Tôi đang hy vọng sẽ sử dụng thuộc tính System.Xml.Serialization
để đơn giản hóa deserialization XML. Vấn đề tôi có là tôi không thể làm việc ra làm thế nào để xác định rằng nút gốc có chứa một mảng.
Tôi đã cố gắng tạo ra các loại sau đây:
[XmlRoot("scan_details")]
public class ScanDetails
{
[XmlArray("object")]
public ScanDetail[] Items { get; set; }
}
public class ScanDetail
{
[XmlAttribute("name")]
public string Filename { get; set; }
}
Tuy nhiên khi tôi deserialize XML vào đối tượng ScanDetails
mảng Items
vẫn null
.
Làm cách nào để deserialize một mảng trong nút gốc?
Ah ... Đó là thuật ngữ khó hiểu mà họ sử dụng. Tôi đã tập trung vào 'XmlArray' và' XmlArrayItem'. Cảm ơn vì điều đó! –
Nếu một mảng, nhưng không chỉ dưới cấp độ gốc, sau đó thuộc tính mảng vẫn có vẻ cần [XmlArray ("arrayElementName")], và không [XmlElement ("arrayElementItemName")], nhưng nếu theo cấp cơ sở như câu trả lời của bạn nó cần [XmlElement ("arrayElementItemName")] bạn có biết tại sao không? Nó giống như ở cấp cơ sở bạn mô tả các kiểu phần tử lặp lại bên trong, và ở đâu đó kiểu mảng. – CRice
Tôi chỉ muốn dành một chút thời gian để cảm ơn bạn. Tôi lùng sục qua nhiều câu trả lời cho nhiều câu hỏi và đây là điều duy nhất hoạt động. Nó không rõ ràng đến mức bạn không cần định nghĩa thuộc tính mảng trên phần tử gốc, cũng không phải phần tử mảng. – Gaugeforever