2009-09-05 45 views
6

Tôi đang cố gắng sắp xếp một số đối tượng thu được từ Bên thứ ba .NET Lib thành tệp XML.Làm cách nào để bỏ qua thuộc tính [XMLIgnore]

Khi tôi Go To Definition cho đối tượng, một số các thuộc tính của đối tượng được đánh dấu là [XMLIgnore]

Có cách nào để nói với System.Xml.Serialization.XmlSerializer tôi bỏ qua thực tế rằng một số khách sạn có thuộc tính đó và rằng nó nên serialize tất cả mọi thứ trong đối tượng.

tôi có lẽ có thể có được nguồn và biên dịch lại nó mà không có sự XMLIgnore thuộc tính nhưng nó muốn được tốt đẹp nếu XmlSerializer đã có một số thuộc tính Ghi đè đẹp như

XmlSerializer xmls = new XmlSerializer(
    typeof(MyObject), 
    Settings.DoNotApplyXMLAttributeRules 
); 

Cảm ơn trước


EDIT

Đã thử XmlAttributeOverrides như được đề xuất nhưng không phải aving nhiều niềm vui. Đây là định nghĩa đối tượng (đó là từ FlickrAPI cho một hình ảnh)

[Serializable] 
public class Photo 
{ 
    //Some code omitted 
    [XmlIgnore] 
    public string LargeUrl { get; } 

} 

Và heres mã serializer Tôi đã viết ... vẫn không hoạt động ...

XmlWriter xtw = XmlWriter.Create(Server.MapPath("~/App_Data/Data.xml")); 

XmlAttributes photoAttributes = new XmlAttributes(); 
photoAttributes.XmlIgnore = false; 

XmlAttributeOverrides photoOverrides = new XmlAttributeOverrides(); 
photoOverrides.Add(typeof(Photo), "LargeUrl", photoAttributes); 

XmlSerializer xmlphoto = new XmlSerializer(typeof(Photo), photoOverrides); 

Trả lời

12

sử dụng:

XmlAttributeOverrides 

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx

Edit: (Sau khi EDIT câu hỏi)

thuộc tính phải công khai và có bộ thu thập và thiết lập để được đăng.

http://msdn.microsoft.com/en-us/library/182eeyhh%28VS.85%29.aspx

((xem chú đầu tiên))

+0

đã thử đó, nhưng không có niềm vui. Bất kỳ đề xuất nào khác sẽ được đánh giá cao. Tôi đã thêm mã vào câu hỏi ban đầu trong trường hợp tôi đang làm điều gì đó ngớ ngẩn. –

+1

LargeUrl không có setter, do đó, ngay cả khi không có thuộc tính XmlIgnore, nó sẽ không được tuần tự hóa. – manji

+1

ah đúng. Tôi đã nhận được xung quanh nó bằng cách tạo ra một lớp proxy để lưu trữ các giá trị trong và sau đó serializing đó một cách riêng biệt. –

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