我有一个名为" accountNumber"的字符串字段。作为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
感谢您的帮助。
我使用以下字段反向设计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
从这个结果来看,似乎没有可能做我想做的事。
对于所有对此问题感兴趣的人,我发现了一个类似问题的帖子。没有提供解决方案。
How to make a dotnet webservice set minOccurs=“1” on a string value
答案 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)。