[英]Deserializing XML to Objects defined in multiple schemas
我有一个XML文档,其中包含2种XML模式的类型。 一个(theirs.xsd)是我正在集成(不能编辑)的专有模式。 为此,我定义了自己的类型(mine.xsd),该类型是'any'元素中的元素,是专有类型。
我使用Visual Studio的xsd.exe从架构生成C#类。 但是,专有类型中的“ any”元素将作为XmlElement []生成,因此我的类型不会反序列化。
因此,我想我可以采用以下两种方法之一:生成将反序列化我的类型的类,而不是将其保留为XmlElement;或者采用XmlElements分别对它们进行反序列化。 要反序列化,我需要一个XmlReader,所以我需要从XmlElement转到XmlReader,但我不确定该怎么做。 谢谢。
示例:文件:themes.xsd
<xs:element name="ProprietaryContainer">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
档案:mine.xsd
<xs:element name="MyPairType">
<xs:complexType>
<xs:sequence>
<xs:element name="key" type="xs:string"/>
<xs:element name="value" type="xs:long"/>
</xs:sequence>
</xs:complexType>
</xs:element>
文件:message.xml
<their:ProprietaryContainer>
<their:name>pairContainer</their:name>
<mine:MyPairType>
<mine:key>abc</mine:key>
<mine:value>long</mine:value>
</mine:MyPairType>
</their:ProprietaryContainer>
从问题:
要反序列化,我需要一个XmlReader,所以我需要从XmlElement转到XmlReader,但我不确定该怎么做
using(XmlReader reader = new XmlNodeReader(element)) {
//... use reader
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.