Я сериализировал и десериализовывал объекты .NET с помощью класса XmlSerializer без проблемы, однако нам теперь нужен кто-то еще для рассмотрения тех данных для выполнения некоторого анализа его.
Для помощи, с которым мы произвели XSD на основе нашего класса как так: xsd.exe/t:DataClass Assembly.exe
Запуск XSD похож на это:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DataClass" nillable="true" type="DataClass" />
<xs:complexType name="DataClass">
<xs:complexContent mixed="false">
<xs:extension base="BaseDataClass">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="StudyID" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" name="Position" type="xs:int" />
<xs:element minOccurs="1" maxOccurs="1" name="IViewer" type="xs:string" />
XML производится как это (где obj является экземпляром нашего DataClass):
Dim xs As New XmlSerializer(obj.GetType)
Dim xmlTextWriter As New XmlTextWriter(memoryStream, Encoding.UTF8)
xs.Serialize(xmlTextWriter, obj)
... который производит XML, бывший похожий на это:
<?xml version="1.0" encoding="utf-8"?>
<DataClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Version>SixMonthQ-E1</Version>
<IViewer xsi:nil="true" />
<Language xsi:nil="true" />
...
<StudyID>12345</StudyID>
Bizarly, произведенный XML не придерживается XSD, сгенерированного от того же класса.
Мой вопрос затем, там способ сказать XmlSerializer сериализировать основанное на объектах на данном XSD?
Как в стороне, я посмотрел на другие способы зафиксировать это: я попытался повторно создать классы от сгенерированного XSD - это, казалось, имело ту же проблему. Я мог явно заявить упорядочивание элементов с помощью атрибута XmlElement, но я не представляю себе делать это для 400 + общественные собственности.