Конвертируйте XSD-файлы в C # Serializable Class - PullRequest
2 голосов
/ 29 июня 2009

Я попытался ответить на этот вопрос , но не смог заставить xsd.exe с радостью взять XSD-файлы и превратить их в класс.

Использование XSD-файлов здесь: http://download.adamhaile.com/SO/XSD.zip
Может ли кто-нибудь помочь мне преобразовать их в действительный класс C #, который затем можно использовать для сериализации XML-документа в?

Примечание. Да, это из недокументированного API фильмов Yahoo, который я пытаюсь использовать. Похоже, что он использует стандартный шаблон схемы на основе Microsoft, поэтому я думаю, что это вполне возможно.

Вот пример результатов одного из вызовов API: http://new.api.movies.yahoo.com/v2/listTheatersByPostalCode?pcode=12345&count=30&yprop=msapi

http://download.adamhaile.com/SO/XSD.zip

Ответы [ 4 ]

4 голосов
/ 29 июня 2009

Обязательно поместите все ссылочные схемы в строку cmd.
Когда я делаю это, я получаю кучу предупреждений.

$ xsd /c listTheatersByPostalCode.xsd yahooMovie.xsd yahooMovieCredit.xsd yahooMovieMedia.xsd yahooMoviePhoto.xsd yahooMovieTheater.xsd yahooMovieTheaterAmenity.xsd yahooMultimedia.xsd yahooUser.xsd
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.
Schema validation warning: The global element 'urn:yahoo:movie:theater:TheaterList' has already been declared. Line 6, position 4.
Schema validation warning: The global attribute 'urn:yahoo:movie:theater:id' has already been declared. Line 7, position 4.
Schema validation warning: The complexType 'urn:yahoo:movie:theater:TheaterListType' has already been declared. Line 10, position 4.
Schema validation warning: The complexType 'urn:yahoo:movie:theater:TheaterType' has already been declared. Line 19, position 4.
Schema validation warning: The complexType 'urn:yahoo:movie:theater:PostalAddressType' has already been declared. Line 32, position 4.
Schema validation warning: The complexType 'urn:yahoo:movie:theater:AmenityListType' has already been declared. Line 55, position 4.
Schema validation warning: The complexType 'urn:yahoo:movie:theater:MovieListType' has already been declared. Line 65, position 4.
Schema validation warning: The complexType 'urn:yahoo:movie:theater:MovieType' has already been declared. Line 71, position 4.
Schema validation warning: The complexType 'urn:yahoo:movie:theater:ShowsType' has already been declared. Line 82, position 4.

Warning: Schema could not be validated. Class generation may fail or may produce incorrect results.

Если я вытащу yahooTheater.xsd из этого списка, он будет работать нормально.

Я даже не смотрел XSD, но мне кажется, что xsd.exe думает, что некоторые элементы были определены вдвойне. Вы можете вручную решить эту проблему, объединив yahootheater.xsd с yahooTheaterAmenity.xsd. Или, если вам нет дела до удобства, отбросьте ее.

2 голосов
/ 02 ноября 2011

Попробуйте http://www.altova.com/download.html. Он имеет 30-дневную пробную версию, но он будет конвертировать xml xsd в классы. он также обратный инжиниринг XML для создания XSD.

2 голосов
/ 29 июня 2009

Используйте xsd.exe, который поставляется с visual studio. iirc xsd / classes theschema.xsd

Но так как вы попробовали это, что пошло не так?

1 голос
/ 29 июня 2009

Как насчет того, чтобы попробовать CodeXS ? Они обычно работают довольно хорошо для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...