在C#中反序列化XML - 在错误的格式上返回null

时间:2011-06-20 09:56:19

标签: c# xml serialization

我已经遵循了我想要反序列化的XML代码:

<a>
   <b> n/a </b>
</a>

现在b通常是整数,但有时“n / a”不可用。每当我反序列化上面的XML时,我得到一个异常,我使用了错误的格式......什么是正确的。 但我需要int只是一个空值

public class a
{
    Nullable<int> b;
}

2 个答案:

答案 0 :(得分:1)

你能做到的唯一方法是使用类似的东西:

[XmlIgnore]
public int? B {get;set;}

public bool ShouldSerializeBSerialized() {
    return B.HasValue;
}
[XmlElement("b")]
public string BSerialized {
    get { return B.ToString(); }
    set {
       int tmp;
       if(value != null && int.TryParse(value.Trim(), out tmp))
       {
           B = tmp;
       }
    }
}

下面:

  • B是我们用来存储数据的int?
  • BSerialized是一个处理解析等的填充属性
  • ShouldSerializeBSerialized确保我们只序列化有效数据

答案 1 :(得分:0)

看看下面的内容:

Serialize a nullable int