XmlSerializer - 必需的元素

时间:2012-01-31 15:51:46

标签: .net wcf xsd xmlserializer

我正在使用XmlSerializer进行WCF服务(在我的服务中有这样的理由)。但是最近我遇到了这个问题:我找不到一种简单的方法来创建所需的引用类型属性,即在XSD中使它的定义如下所示:

<xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:string"/>

而不是:

<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string"/>

以下是属性的代码:

[XmlElement]
public string Name { get; set; }

我知道使用DataContractSerializer我可以这样做:

[DataMember(IsRequired = true)]
public string Name { get; set; }

我会得到所需的架构。

如何使用XmlSerializer属性获得与IsRequired类似的功能?

感谢。

2 个答案:

答案 0 :(得分:0)

使用

[XmlElement(IsNullable=true)]

应该强制该成员即使在null时序列化,使得它的minOccurs为1(我认为 - 没有检查过。)

答案 1 :(得分:0)

方法是手动创建或编辑XSD,然后使用经过验证的XmlReader作为XmlSerializer的输入。