我有以下课程:
[Serializable]
[XmlType(TypeName = "CoreAccount")]
public abstract class Account
{
[XmlElement(IsNullable = true)]
public string AccountNumber { get; set; }
public decimal Balance { get; set; }
public DateTime OpenDate { get; set; }
}
我正在使用Microsoft的XSD.exe从类中生成XML架构。正在XSD中生成'AccountNumber'属性,如下所示:
<xs:element minOccurs="1" maxOccurs="1" name="AccountNumber" type="xs:string" />
我很高兴这个元素是必需的,但是我不想要接受一个空的(nillable)值。
我知道简单的选择是手动更新XSD以包含:
nillable="false"
但我希望能够以编程方式执行此操作,以便XSD.exe工具生成此功能。有人有什么建议吗?我在其他地方读到这是.NET的限制,但我想知道是否有其他人有任何想法。
提前致谢
答案 0 :(得分:1)
对于给定的班级
[Serializable]
[XmlType(TypeName = "CoreAccount")]
public abstract class Account
{
[XmlElement(IsNullable = false)]
public string AccountNumber { get; set; }
public decimal Balance { get; set; }
public DateTime OpenDate { get; set; }
}
将始终生成具有以下元素的xsd
<xs:element minOccurs="1" maxOccurs="1" name="AccountNumber" type="xs:string" />
这是因为nillable
属性的默认值为false
请参阅 - http://www.w3schools.com/xml/el_element.asp
的nillable 可选的。指定是否可以为元素分配显式空值。 True允许元素的实例将null属性设置为true。 null属性被定义为实例的XML Schema名称空间的一部分。默认为false
通过查看XSD.exe
的文档,没有办法明确生成xsd(https://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx)