- Я автоматически сгенерировал некоторые классы, используя xsd.exe для проекта, над которым я работаю.
- Я создаю XML-документ с использованием автоматически сгенерированных классов.
- AПодмножество схемы очень похоже на html, и я пытаюсь внести необработанный HTML в мои классы
- С этой целью я пытаюсь десериализовать фрагмент HTML в класс (не корневой узел), который соответствуетв HTML в моем документе.
Теоретически звучит хорошо, верно?Проблема в том, что мой необработанный текст не будет десериализован.Я делаю что-то неправильно?У меня большой опыт работы с XML и базовый опыт работы с .NET XmlSerializer.Сериализатор не выдает ошибку, он просто не может десериализовать содержимое.
Это код, который я использую для десериализации:
Dim FromValue As String = "<StrucDoc.Text><table><tr><td>Inside Text</td></tr></table></StrucDoc.Text>"
Dim ms As New IO.MemoryStream(Encoding.UTF8.GetBytes(FromValue))
Dim ToValue As HL7.V3.StrucDocText
Dim t As New System.Xml.Serialization.XmlSerializer(GetType(HL7.V3.StrucDocText))
ToValue = t.Deserialize(ms)
Важная часть автоматически сгенерированногокод ... он очень большой:
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(TypeName:="StrucDoc.Text", [Namespace]:="urn:hl7-org:v3")> _
Partial Public Class StrucDocText
Private itemsField() As Object
Private textField() As String
Private idField As String
Private languageField As String
Private styleCodeField As String
Private mediaTypeField As String
Public Sub New()
MyBase.New()
Me.mediaTypeField = "text/x-hl7-text+xml"
End Sub
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("br", GetType(StrucDocBr)), _
System.Xml.Serialization.XmlElementAttribute("content", GetType(StrucDocContent)), _
System.Xml.Serialization.XmlElementAttribute("footnote", GetType(StrucDocFootnote)), _
System.Xml.Serialization.XmlElementAttribute("footnoteRef", GetType(StrucDocFootnoteRef)), _
System.Xml.Serialization.XmlElementAttribute("linkHtml", GetType(StrucDocLinkHtml)), _
System.Xml.Serialization.XmlElementAttribute("list", GetType(StrucDocList)), _
System.Xml.Serialization.XmlElementAttribute("paragraph", GetType(StrucDocParagraph)), _
System.Xml.Serialization.XmlElementAttribute("renderMultiMedia", GetType(StrucDocRenderMultiMedia)), _
System.Xml.Serialization.XmlElementAttribute("sub", GetType(StrucDocSub)), _
System.Xml.Serialization.XmlElementAttribute("sup", GetType(StrucDocSup)), _
System.Xml.Serialization.XmlElementAttribute("table", GetType(StrucDocTable))> _
Public Property Items() As Object()
Get
Return Me.itemsField
End Get
Set(ByVal value As Object())
Me.itemsField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlTextAttribute()> _
Public Property Text() As String()
Get
Return Me.textField
End Get
Set(ByVal value As String())
Me.textField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="ID")> _
Public Property ID() As String
Get
Return Me.idField
End Get
Set(ByVal value As String)
Me.idField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="NMTOKEN")> _
Public Property language() As String
Get
Return Me.languageField
End Get
Set(ByVal value As String)
Me.languageField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="NMTOKENS")> _
Public Property styleCode() As String
Get
Return Me.styleCodeField
End Get
Set(ByVal value As String)
Me.styleCodeField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property mediaType() As String
Get
Return Me.mediaTypeField
End Get
Set(ByVal value As String)
Me.mediaTypeField = value
End Set
End Property
End Class
После выполнения ToValue.itemsField == null
.Я ожидаю массив с одним StrucDocTable
элементом.
Любая помощь будет оценена.