2012-10-04 27 views
5

Có cách nào để đặt xmlroot của một đối tượng hoặc lớp trong thời gian chạy không?Tôi có thể chỉ định XMLRoot qua mã thay vì các thuộc tính không?

[XmlRoot("data")] 
public class MyRoot { 
    [XmlElement("bar")] 
    public List<RemoteHost> Hosts {get;set;} 
} 

Tôi không có tùy chọn sửa đổi lớp MyRoot trong trường hợp này; vì vậy, tôi muốn xác định rằng tôi muốn tên gốc được gọi là "dữ liệu" trước khi tôi tuần tự hóa đối tượng thành XML bằng cách sử dụng XmlSerializer.

Trả lời

9

Có! Chỉ cần:

var serializer = new XmlSerializer(typeof(MyRoot), 
    new XmlRootAttribute("data")); 

Hoặc hoàn toàn hơn, xem XmlAttributeOverrides. Tuy nhiên, với một trong hai bạn, phải bộ nhớ cache và tái sử dụng phiên bản trình nối tiếp, nếu không bạn sẽ bị rò rỉ các hội đồng.

Các vấn đề liên quan