我有一个名为“accountNumber”的字符串字段作为 Web 服务中使用的对象的一部分。我需要这个字段,minOccurs="1"
但没有 nillable="true"
。如果我将该字段定义为,<XmlElement(IsNullable:=True)>
那么我得到minOccurs="1"
and 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 日:发现一篇有类似问题的帖子
对于所有对这个问题感兴趣的人,我发现了一个类似问题的帖子。没有提供解决方案。