Tôi gặp sự cố khi deserializing một số XML; XML do bên thứ ba cung cấp khá chi tiết, vì vậy nếu không có giá trị được đặt cho một phần tử cụ thể, nó sẽ cung cấp và phần tử trống (ví dụ: <element1 />
).Sử dụng đồ trang trí XML để chỉ định giá trị mặc định trong quá trình de-serialization
Đây là vấn đề đối với một số thành phần nhất định, ví dụ: những yếu tố có nghĩa là lưu trữ số nguyên. Tôi có quyền kiểm soát đối với bên thứ ba, vì vậy tôi có thể yêu cầu họ chỉ định giá trị mặc định (<myinteger>0</myinteger>
) hoặc tôi có thể khiến họ bỏ qua hoàn toàn các yếu tố này. Cả hai đều nên tránh vấn đề.
Tuy nhiên, có thể có các tình huống trong tương lai, nơi chúng tôi không có nhiều quyền kiểm soát - trong trường hợp nào, có cách xác định, có thể thông qua trang trí, giá trị mặc định không?
[XmlElement("myinteger")=0???]
public int MyInteger
{
get
{
return myInteger;
}
set
{
myInteger= value;
}
}
Hmmmm ... đơn giản nhận được bên thứ ba bỏ qua các phần tử trống của mô tả có vẻ là giải pháp đơn giản nhất. Tôi chỉ tò mò những gì tôi có thể làm, nơi tôi không có sự sang trọng của sự lựa chọn đó. Tôi đã xem xét các tùy chọn chuỗi, nhưng nó chỉ là một can lớn của sâu ... – CJM
Có ít nhất một hiệu ứng quan trọng trong quá trình deserialization. Nếu phần tử trống, không có DefaultValue thì có thể có lỗi phân tích cú pháp. Tuy nhiên, với nó, [mã được tạo] (http://msdn.microsoft.com/en-us/library/aa302290.aspx) sẽ bỏ qua phần tử trống. –