Я использовал Вставить XML в качестве классов в Visual Studio, которая, кажется, работает нормально, но я получаю сообщение об ошибке при попадании атрибутов xsi: type в файл.
После связкипоиска я обнаружил, что это распространенная проблема с Paste XML as Classes, потому что он не обрабатывает полиморфные подтипы.Я также обнаружил, что вы можете исправить это, добавив XML include в класс, имеющий тип xsi: type, и создайте производный класс для этого типа.Поэтому, если в моем 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
{ }