我需要将一些数据序列化,以便通过Web服务作为消息传递,并根据模式验证数据。我已经建立了一个对象模型,但在某个小区域中缺少了一些东西。
这是模式:
<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; }
}
}
我在Any
元素上使用了XmlElementAttribute
,以便将其序列化为一个没有容器的元素序列,但是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”元素序列?