需要帮助反序列化C-CDA文档

时间:2019-06-06 16:42:57

标签: c# xml-deserialization c-cda

我使用了Visual Studio的将XML粘贴为类,这似乎可以正常工作,但是在文件中击中xsi:type属性时出现错误。

经过一堆搜索,我发现这是将XML粘贴为类的常见问题,因为它不能处理多态子类型。我还发现,可以通过向具有xsi:type的类中添加XML include并为该类型创建派生类来解决此问题。因此,如果我的XML在其中一个元素中具有xsi:type =“ urn:CD”,则可以将[XMLInclude(typeof(CD))]添加到适当的类中,并创建一个从元素类继承的“ CD”类。像这样:

    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:hl7-org:v3")]
    [System.Xml.Serialization.XmlInclude(typeof(CD))]
    public partial class ClinicalDocumentComponentComponentSectionEntryObservationValue
    {
        ...//
    }

    [System.Xml.Serialization.XmlType("CD", Namespace = "urn:hl7-org:v3")]
    public class CD : ClinicalDocumentComponentComponentSectionEntryObservationValue
    { }

这确实适用于那个Element类,但是问题是我有多个类调用相同的xsi:type =“ urn:CD”

由于不能有多个基类,因此如何使CD类可用于需要它的任何调用类。例如下面的示例,其中我有两个需要使用CD类的类。正确使用它的唯一对象是ClinicalDocumentComponentComponentSectionEntryObservationValue类:

    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:hl7-org:v3")]
    [System.Xml.Serialization.XmlInclude(typeof(CD))]
    public partial class ClinicalDocumentComponentComponentSectionEntryActEntryRelationshipObservationEntryRelationshipObservationValue
    {
        ...//
    }

    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:hl7-org:v3")]
    [System.Xml.Serialization.XmlInclude(typeof(CD))]
    public partial class ClinicalDocumentComponentComponentSectionEntryObservationValue
    {
        ...//
    }

    [System.Xml.Serialization.XmlType("CD", Namespace = "urn:hl7-org:v3")]
    public class CD : ClinicalDocumentComponentComponentSectionEntryObservationValue
    { }

0 个答案:

没有答案