Ich habe ein XML-Dokument, das Typen aus 2 XML-Schemas enthält. One (theirs.xsd) ist ein proprietäres Schema, in das ich integriere (und nicht bearbeiten kann). Um dies zu tun, definiere ich meinen eigenen Typ (mine.xsd), der ein Element innerhalb eines 'any'-Elements ist, ist der proprietäre Typ.Deserialisieren von XML zu Objekten, die in mehreren Schemas definiert sind
Ich verwende Visual Studio xsd.exe, um C# -Klassen aus den Schemas zu generieren. Das Element 'any' im proprietären Typ wird jedoch als XmlElement [] generiert, und daher wird mein Typ nicht deserialisiert.
Also ich denke, ich kann eine von zwei Möglichkeiten gehen: Entweder generieren Klassen, die meinen Typ deserialisieren, anstatt es als XmlElement, oder nehmen Sie die XmlElements und deserialize sie einzeln. Zum Deserialisieren benötige ich einen XmlReader, also müsste ich von einem XmlElement zu einem XmlReader wechseln, von dem ich nicht weiß, wie ich es machen soll. Vielen Dank.
Beispiel: Datei: 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>
Datei: 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>
Datei: 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>
(antwortete Kommentar) –