C# 如何序列化';任何';没有包含元素的元素

C# 如何序列化';任何';没有包含元素的元素,c#,serialization,xsd,C#,Serialization,Xsd,我需要序列化一些数据作为消息通过web服务传递,web服务将根据模式验证数据。我已经建立了一个对象模型,但是我在一个小区域缺少了一些东西 这是模式: <xs:element name="UserDetailsMessage" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="URDUSERDETAILS" minOccurs="0">

我需要序列化一些数据作为消息通过web服务传递,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>
这导致
XmlDocument.Validate
方法输出此验证错误:
未声明'Any'元素

据我所知,我试图创建的输出应该如下所示:

<UserDetailsMessage>
    <USERDETAILS>
        <TEST_DATA_HERE />
    </USERDETAILS>
</UserDetailsMessage>


xmlementattribute
是否以某种方式与
xmlanyementattribute
交互以生成此输出,还是我在某个地方犯了明显的错误?或者,我应该如何序列化一个没有包含元素的“Any”元素序列?

我终于有时间坐下来创建一个只包含特定关注区域的测试项目,并得出以下结论

<Serializable()> Public Class NotificationMessage

    Private myUserData As UserData

    Public Sub New()
        myUserData = New UserData()
    End Sub

    <System.Xml.Serialization.XmlElementAttribute("UserData")> _
    Public Property UserData() As UserData
        Get
            Return Me.myUserData
        End Get
        Set(value As UserData)
            Me.myUserData = value
        End Set
    End Property

End Class

<Serializable()> Public Class UserData

    Private anyField As List(Of System.Xml.XmlElement)

    Public Sub New()
        Me.anyField = New List(Of System.Xml.XmlElement)()
    End Sub

    <XmlAnyElementAttribute()>
    Public Property Any() As List(Of System.Xml.XmlElement)
        Get
            Return Me.anyField
        End Get
        Set(value As List(Of System.Xml.XmlElement))
            Me.anyField = value
        End Set
    End Property
End Class
这是仅应用
XmlElement
时的输出:

<NotificationMessage>
  <UserData>
    <Any>
      <TEST_DATA_HERE />
    </Any>
  </UserData>
</NotificationMessage>
因此,我们可以看到,为了序列化“Any”元素序列,我们必须仅使用xmlanyement属性

<Serializable()> Public Class NotificationMessage

    Private myUserData As UserData

    Public Sub New()
        myUserData = New UserData()
    End Sub

    <System.Xml.Serialization.XmlElementAttribute("UserData")> _
    Public Property UserData() As UserData
        Get
            Return Me.myUserData
        End Get
        Set(value As UserData)
            Me.myUserData = value
        End Set
    End Property

End Class

<Serializable()> Public Class UserData

    Private anyField As List(Of System.Xml.XmlElement)

    Public Sub New()
        Me.anyField = New List(Of System.Xml.XmlElement)()
    End Sub

    <XmlAnyElementAttribute()>
    Public Property Any() As List(Of System.Xml.XmlElement)
        Get
            Return Me.anyField
        End Get
        Set(value As List(Of System.Xml.XmlElement))
            Me.anyField = value
        End Set
    End Property
End Class
<NotificationMessage>
  <UserData>
    <Any>
      <TEST_DATA_HERE />
    </Any>
  </UserData>
</NotificationMessage>
<NotificationMessage>
  <UserData>
    <Any>
      <TEST_DATA_HERE />
    </Any>
  </UserData>
</NotificationMessage>
<NotificationMessage>
  <UserData>
    <TEST_DATA_HERE />
  </UserData>
</NotificationMessage>