スキーマに対してデータを検証する Web サービスを介してメッセージとして渡すデータをシリアル化する必要があります。オブジェクト モデルを作成しましたが、1 つの小さな領域で何かが欠けています。
これはスキーマです:
<xs:element name="UserDetailsMessage" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="URDUSERDETAILS" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any processContents="skip" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
これは私のクラスです:
[Serializable()] public class UserDetailsMessage
{
private USERDETAILS myUserDetails;
[XmlElementAttribute("USERDETAILS")]
public USERDETAILS USERDETAILS {
get {
if (myUserDetails == null)
myUserDetails = new USERDETAILS();
return this.myUserDetails;
}
set { this.myUserDetails = value; }
}
public bool URDUSERDETAILSSpecified {
get {
if (myUserDetails == null)
return false;
return true;
}
}
}
[Serializable()] public class USERDETAILS
{
private List<System.Xml.XmlElement> anyField;
[XmlAnyElementAttribute(), XmlElementAttribute("Any")]
public List<System.Xml.XmlElement> Any {
get { return this.anyField; }
set { this.anyField = value; }
}
}
XmlElementAttribute
コンテナーなしで要素のシーケンスとしてシリアル化するために、要素にを使用してAny
いますが、XML 出力は思ったほど出力されません。
<UserDetailsMessage>
<USERDETAILS>
<Any>
<TEST_DATA_HERE />
</Any>
</USERDETAILS>
</UserDetailsMessage>
これにより、XmlDocument.Validate
メソッドは次の検証エラーを出力します。The 'Any' element is not declared
私の知る限り、作成しようとしている出力は次のようになります。
<UserDetailsMessage>
<USERDETAILS>
<TEST_DATA_HERE />
</USERDETAILS>
</UserDetailsMessage>
この出力を生成するために何らかの方法でXmlElementAttribute
とやり取りしているのでしょうか、それともどこかで明らかな間違いを犯したのでしょうか? XmlAnyElementAttribute
または、要素を含まない「Any」要素のシーケンスをどのようにシリアル化する必要がありますか?