Webサービスで使用されるオブジェクトの一部として「accountNumber」という名前の文字列フィールドがあります。このフィールドが必要ですが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日編集:同様の問題の投稿が見つかりました
この問題に関心のあるすべての人のために、私は同様の問題のある投稿を見つけました。提供された解決策はありませんでした。