Я пытаюсь десериализовать с наследованием.Использование наследования в десериализации XML
К примеру, у меня есть класс для opensearch
В ближайшее время XSD, как это:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://a9.com/-/spec/opensearch/1.1/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OpenSearchDescription">
<xs:complexType>
<xs:sequence>
<xs:element name="ShortName" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Mozilla impements this но они используют свои собственные схемы.
поэтому у них есть:
<?xml version="1.0" encoding="Windows-1252"?>
<xs:schema xmlns:os="http://a9.com/-/spec/opensearch/1.1/" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.mozilla.org/2006/browser/search/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://a9.com/-/spec/opensearch/1.1/" />
<xs:element name="SearchPlugin">
<xs:complexType>
<xs:sequence>
<xs:element ref="os:ShortName" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Для OpenSearch У меня есть класс, как
[SerializableAttribute]
[XmlRoot(Namespace = "http://a9.com/-/spec/opensearch/1.1/", IsNullable = false, ElementName = "OpenSearchDescription")]
public class OpenSearch
{
public string ShortName { get; set; }
}
Это прекрасно работает, когда я пытаюсь deserialise в XML ...
Для моей реализации MOZILLA Я просто хочу что-то вроде этого:
[System.SerializableAttribute]
[XmlRoot(Namespace = "http://www.mozilla.org/2006/browser/search/", IsNullable = false, ElementName = "SearchPlugin")]
public class SearchPlugin
{
public OpenSearch OpenSearch { get; set; }
}
однако, всякий раз, когда я пытаюсь десериализировать объект SearchPlugin, объект OpenSearch имеет значение NULL.
Как я могу это сделать? Я попытался создать пример для себя, создав код с помощью xsd.exe, однако я также продолжаю получать ошибки, когда пытаюсь сгенерировать код для SearchPlugin.xsd, так что это не помогло ...