В настоящее время у меня проблема с генерацией файлов классов из xsd с повторяющимися элементами. Я использую пользовательский инструмент "MsDatasetGenerator" в VS2005 SP1, который создает набор типизированных данных из xsd для c #. Я пытаюсь разобрать xml по этой схеме
<?xml version="1.0" encoding=\"utf-8\"?>
<xs:schema id="XSDobject" targetNamespace="http://tempuri.org/XSDobject.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XSDobject.xsd" xmlns:mstns="http://tempuri.org/XSDobject.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element name="contact">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="phone" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="buyer">
<xs:complexType>
<xs:sequence>
<xs:element name="contact">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="phone" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Но я получаю следующую ошибку: " Одна и та же таблица 'contact' не может быть дочерней таблицей в двух вложенных отношениях. "
XSD компилируется правильно, но это типизированный набор данных, который не может обрабатывать повторяющиеся таблицы. Теперь я протестировал и инструмент xsd.exe, но, похоже, он генерирует тот же код, что и msdatasetgenerator. Я также попробовал некоторые сторонние инструменты генерации кода, такие как XSD2Code, CodeXS, AltovaXmlSpy, но также не могу заставить его работать с вложенными элементами.
В качестве альтернативы я мог бы решить проблему с преобразованием xslt на входе и выходе, но это стоило бы мне большой производительности.
Так что теперь я спрашиваю, может ли кто-нибудь помочь мне с хорошим решением для VS2005 или знает хороший генератор классов xsd, который может решить эту проблему. Это не обязательно должен быть типизированный набор данных, если он работает как массив или список, он также идеален, если его легко сериализовать и десериализовать.
Заранее спасибо
Freggel