Конвертируйте XSD-файлы в C # Serializable Class

2

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

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

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

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

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

Теги:
xsd

4 ответа

4
Лучший ответ

Обязательно поместите все ссылочные схемы в строку 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. Или, если вы не заботитесь о части удобства, бросьте ее.

  • 0
    Итак, удаление этого файла приводит к тому, что я получаю тот же самый точный файл .cs, он просто не выдает эти ошибки ... странно ... Хотя, что за дело с тем, что все классы являются частичными?
  • 0
    да? "вывоз этого файла заканчивается"? Что касается частичных классов, то вы можете расширить их, если хотите. Они потенциально частичны. Они будут компилироваться без модов и без дополнительного кода.
Показать ещё 4 комментария
2

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

2

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

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

  • 0
    Он выдал только частичный класс, который не работал и сказал, что схема не может быть проверена.
1

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

  • 0
    Что я могу ввести для пространства имен (мне нужен некоторый контекст)? Когда я просматриваю свой Xsd в Visual Studio, в Xml Schema Explorer он отображается как «Пустое пространство имен».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню