0
- 私が作業しているプロジェクトでxsd.exeを使用していくつかのクラスを自動生成しました。
- 私は、自動生成クラスを使用してxmlドキュメントを構築しています。
- スキーマのサブセットは非常にhtmlのようなもので、生のHTMLを自分のクラスに持ってきています
- そのために、私の文書のHTMLに対応しています。
理論的にはうまく聞こえますか?問題は、私の原文は逆直列化されていないということです。私は何か間違っているのですか? XMLに関する豊富な経験と、.NET XmlSerializerに関する基本的な経験があります。シリアライザはエラーにはならず、内容をデシリアライズできません。.NET XmlSerializerはXmlElementAttributeオブジェクト配列を逆シリアル化しません
これは私がデシリアライズするために使用していたコードです:
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
。 1つの配列が1つのStrucDocTable
要素を持つと期待しています。
ご協力いただければ幸いです。
XMLのサンプルを投稿してください。 –