В следующем XSD все элементы являются обязательными:
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://TestNamespace" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://TestNamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Test">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="Id" type="xs:int" />
<xs:element minOccurs="1" maxOccurs="1" name="EMail" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Однако, когда я сериализую экземпляр сгенерированного xsd.exe класса, где EMail == null
, результирующий XML недействителен в соответствии со схемой, поскольку элемент EMail полностью отсутствует.
<?xml version="1.0"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://TestNamespace">
<Id xmlns="">2</Id>
</Test>
Это почему? Есть ли способ предотвратить это?