为什么xsd.exe为xs:integer生成字符串属性

本文关键字:字符串 属性 integer xsd exe xs 为什么 | 更新日期: 2023-09-27 18:27:03

当我使用xsd.exe从xsd模式生成c#类时,我发现这有点奇怪。

我的元素:

<xs:element name="InvoiceNo" type="xs:integer"/>

生成为:

[System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=5)]
public string InvoiceNo
{
   ...
}

为什么该属性没有生成为int而不是string

为什么xsd.exe为xs:integer生成字符串属性

此行为是经过设计的:

xs:integer类型被指定为没有上限或下限的数字根据其大小而定。因此,无论是XML序列化还是验证将其映射到System.Int32类型。相反,XML序列化将xs:integer映射到字符串,而验证将其映射到小数类型,该类型比.NET框架

使用xs:int,这是一个有符号的32位整数,让Xsd.exe将其映射到System.Int32:

<xs:element name="InvoiceNo" type="xs:int" />

下面是XMLSchema定义标准中定义的数据类型的详细列表。