상속을 사용하여 deserialize하려고합니다.XML deserialisation에서 상속 사용
<?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하지만 그들은 자신의 방식을 사용
예를 들어, 내가 곧 opensearch
위한 클래스가의 XSD는 다음과 같이한다. 그래서
자신이 갖고 : 오픈 서치를 들어
<?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>
내가 가진 내 모질라 구현을 위해 내가 XML을 deserialise 할 때이 잘 작동
[SerializableAttribute]
[XmlRoot(Namespace = "http://a9.com/-/spec/opensearch/1.1/", IsNullable = false, ElementName = "OpenSearchDescription")]
public class OpenSearch
{
public string ShortName { get; set; }
}
같은 클래스 ...
다음과 같은 내용을 원합니다.
[System.SerializableAttribute]
[XmlRoot(Namespace = "http://www.mozilla.org/2006/browser/search/", IsNullable = false, ElementName = "SearchPlugin")]
public class SearchPlugin
{
public OpenSearch OpenSearch { get; set; }
}
그러나 SearchPlugin 객체를 deserialise하려고 할 때마다 OpenSearch 객체는 NULL입니다.
어떻게해야합니까? xsd.exe를 사용하여 코드를 생성하여 직접 예제를 만들려고했지만 SearchPlugin.xsd에 대한 코드를 생성하려고 할 때 오류가 계속 발생하므로 도움이되지 않았습니다.