我有一个XML文档,其中包含来自2个XML模式的类型。一个(theirs.xsd)是我正在集成(并且无法编辑)的专有模式。为此,我定义了我自己的类型(mine.xsd),它是'any'元素中的一个元素是专有类型。
我使用Visual Studio的xsd.exe从模式生成C#类。但是,专有类型中的“any”元素是作为XmlElement []生成的,因此我的类型不会被反序列化。
所以我想我可以采用以下两种方法之一:生成将反序列化我的类型而不是将其保存为XmlElement的类,或者单独使用XmlElements并反序列化它们。要反序列化我需要一个XmlReader,所以我需要从XmlElement转到XmlReader,我不知道该怎么做。感谢。
实施例: 文件:theirs.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>
答案 0 :(得分:1)
从问题:
要反序列化我需要一个XmlReader,所以我需要从XmlElement转到XmlReader,我不知道该怎么做
using(XmlReader reader = new XmlNodeReader(element)) {
//... use reader
}