Vb.net XSD minOccurs=";1“;对于字符串

Vb.net XSD minOccurs=";1“;对于字符串,vb.net,xsd,Vb.net,Xsd,我有一个名为“accountNumber”的字符串字段,作为webservice中使用的对象的一部分。我需要此字段包含minOccurs=“1”但不包含nillable=“true”。 如果我将该字段定义为,则得到minOccurs=“1”和nillable=“true”。如果我定义,那么我不会得到nillable=“true”,而是得到minOccurs=“0” 那么,我如何定义我的对象以在XSD中获得它: <s:element minOccurs="1" maxOccurs="1" n

我有一个名为“accountNumber”的字符串字段,作为webservice中使用的对象的一部分。我需要此字段包含
minOccurs=“1”
但不包含
nillable=“true”
。 如果我将该字段定义为
,则得到
minOccurs=“1”
nillable=“true”
。如果我定义
,那么我不会得到
nillable=“true”
,而是得到
minOccurs=“0”

那么,我如何定义我的对象以在XSD中获得它:

<s:element minOccurs="1" maxOccurs="1" name="accountNumber" type="s:string" />

我的类定义非常简单:

<Serializable()> _
<XmlType(Namespace:="http://mysite.org")> _
Public Class MyServiceWS
    'some other definitions
    <XmlElement(IsNullable:=True)> <VBFixedString(64)> Public accountNumber As String
End Class
_
_
公共类MyServiceWS
"其他一些定义,
作为字符串的公共accountNumber
末级
谢谢你的帮助


编辑2012年10月16日:反向工程XSD
我使用以下字段反向工程XSD:

<xs:element name="TEST1" minOccurs="1" maxOccurs="1" type="xs:string"/>
<xs:element name="TEST2" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element name="TEST3" minOccurs="1" maxOccurs="1" nillable="true" type="xs:string"/>
<xs:element name="TEST4" minOccurs="0" maxOccurs="1" nillable="false" type="xs:string"/>

我使用了以下命令:xsd.exe MyClass.xsd/classes/language:vb/f

结果如下:

'''<remarks/>
Public TEST1 As String

'''<remarks/>
Public TEST2 As String

'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=true)>  _
Public TEST3 As String

'''<remarks/>
Public TEST4 As String
“”
公共TEST1作为字符串
'''
公共TEST2作为字符串
'''
_
公共TEST3作为字符串
'''
公共TEST4作为字符串
从这个结果来看,似乎不可能实现我想要实现的目标


编辑2012年10月17日:发现一篇有类似问题的帖子
对于所有对这个问题感兴趣的人,我发现了一篇有类似问题的帖子。没有提供解决方案


据我所知,我所要求的是不可能通过.NET实现自动化的。我必须手动修改WSDL。

据我所知,我所要求的是不可能通过.NET实现自动化的。我必须手动更改WSDL。

我已经在另一个有相同问题的线程上发布了详细答案:

然而,简短的回答是否定的。字符串类型是不可能的


字符串类型的默认值为String.Empty,并且minOccurs不会设置为1,除非没有默认值(这只能使用字符串的IsNullable=true

然而,简短的回答是否定的。字符串类型是不可能的


字符串类型的默认值为String.Empty,并且minOccurs不会设置为1,除非没有默认值(这只能使用IsNullable=true进行字符串设置)。

我建议做相反的操作:创建一个虚拟XML模式,以您想要的方式包含XSD内容,然后使用vb语言设置运行xsd.exe生成代码,然后查看生成的其他提示。已经尝试过了-它们似乎是相同的。那么你是说,你得到了不同的minOccurs?i、 e.从XSD到VB.NET的反向工程和从VB代码到XSD的正向工程是否也不起作用?我是用另一种方法做的。。。请参阅我的编辑。我建议做相反的操作:创建一个虚拟XML模式,以您想要的方式包含XSD内容,然后使用vb语言设置运行XSD.exe生成代码,然后查看生成的其他提示。已经尝试过了-它们似乎是相同的。那么您是说,你得到了不同的结果?i、 e.从XSD到VB.NET的反向工程和从VB代码到XSD的正向工程是否也不起作用?我是用另一种方法做的。。。请看我的编辑。