XSD minOccurs =“1”表示字符串

时间:2012-10-15 16:59:19

标签: vb.net xsd

我有一个名为&#34; accountNumber&#34;的字符串字段。作为Web服务中使用的对象的一部分。我需要此字段为minOccurs="1"没有 nillable="true"。 如果我将该字段定义为<XmlElement(IsNullable:=True)>,那么我会获得minOccurs="1"nillable="true"。如果我定义<XmlElement(IsNullable:=False)>,那么我就不会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

感谢您的帮助。


编辑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

从这个结果来看,似乎没有可能做我想做的事。


编辑2012年10月17日:发现了一篇类似问题的帖子


对于所有对此问题感兴趣的人,我发现了一个类似问题的帖子。没有提供解决方案。

How to make a dotnet webservice set minOccurs=“1” on a string value

2 个答案:

答案 0 :(得分:0)

据我所知,我要问的是无法通过.NET实现自动化。我必须手动更改WSDL。

答案 1 :(得分:0)

我已经在另一个有相同问题的帖子上发布了详细的答案:How to make a dotnet webservice set minOccurs=“1” on a string value

但简短的回答是。字符串类型不可能。

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