XmlSerializer和可接受的值

时间:2011-11-23 15:27:20

标签: c# xml-serialization xsd xml-parsing

您好我正在开发一个项目,我应该将我的对象序列化和反序列化为Xml并返回到对象。我使用XmlSerializer类来实现这一目标。所以我的问题是,如果元素的属性值无效,我无法弄清楚如何阻止序列化。例如,我有一个名称为person的元素,其中包含1个属性(名称) 我想阻止用户在此属性中添加除(Alex,Nick,..)之外的其他名称,在这种情况下我需要xsd restriction(pattern),但对于我的模型。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果您只想要条件序列化,可以使用ShouldSerialize *模式执行此操作。因此,如果您有一个属性Name(例如),则可以添加:

public bool ShouldSerializeName() {
    /* validate; return true to serialize, false to skip */
}

该方法需要对XmlSerializer公开,尽管相同的模式在其他地方(例如System.ComponentModel)也可以工作,即使是非公开的。

答案 1 :(得分:0)

我不确定天气在某些情况下忽略某些数据是个好主意,但如果您真的想这样做,请查看IXmlSerializable Interface。我认为手动实现此接口将是满足您的要求的唯一方法。