У меня есть документ XML, содержащий типы из двух схем XML. Один из них (ихs.xsd) является частной схемой, с которой я интегрируюсь (и не могу редактировать). Чтобы сделать это, я определяю свой собственный тип (mine.xsd), который является элементом внутри элемента 'any' и является проприетарным типом.
Я использую xsd.exe в Visual Studio для генерации классов C # из схем. Однако элемент any в проприетарном типе генерируется как XmlElement [], и поэтому мой тип не десериализован.
Так что я думаю, что могу пойти одним из двух способов: либо сгенерировать классы, которые будут десериализовать мой тип, а не сохранять его как XmlElement, либо взять XmlElements и десериализовать их индивидуально. Для десериализации мне нужен XmlReader, поэтому мне нужно перейти от XmlElement к XmlReader, что я не уверен, как это сделать. Спасибо.
Пример:
Файл: itss.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>