Какие-либо инструменты для генерации схемы XSD из экземпляра документа XML?

151

Я ищу инструмент, который возьмет документ экземпляра XML и выведет соответствующую схему XSD.

Я, конечно же, понимаю, что сгенерированная схема XSD будет ограничена по сравнению с созданием схемы вручную (вероятно, она не будет обрабатывать необязательные или повторяющиеся элементы или ограничения данных), но она может по крайней мере служить в качестве быстрой начальной точки.

Теги:
xsd

10 ответов

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

Инструмент Microsoft XSD inference - это хорошее, бесплатное решение. Многие функции редактирования XML, такие как XmlSpy (упомянутые @Garth Gilmour) или OxygenXML Editor, также имеют эту функцию. Они довольно дороги. BizTalk Server также имеет инструмент вывода XSD.

edit: Я только что открыл класс .net XmlSchemaInference, поэтому, если вы используете .net, вы должны подумать, что

  • 1
    вау, месяцы спустя вы указали мне на отличное решение для быстрого преобразования XDR в XSD! Спасибо!
  • 6
    Мне было сложно найти загрузку для этого инструмента (xsd.exe), но она уже была в моей системе в C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Просто подумал, что поделюсь, если это кому-нибудь поможет.
Показать ещё 4 комментария
55

Вы можете использовать опцию open source и cross-platform: inst2xsd из Apache XMLBeans. Я считаю это очень полезным и легким.

Просто скачайте, разархивируйте и играйте (для этого требуется Java).

  • 0
    отличный совет, который действительно мне очень помог, спасибо!
  • 2
    OMG Это намного лучше, чем вся эта фигня Powershell! Тем более, что у меня не было XSD-файла!
Показать ещё 6 комментариев
51

Trang - лучший вариант здесь. Open source и кросс-платформу (хотя требуется Java)

С веб-сайта Trang:

Trang преобразует различные языки схемы для XML. Он поддерживает следующие языки.

  • RELAX NG (синтаксис XML)
  • Компактный синтаксис RELAX NG
  • XML 1.0 DTD
  • Схема XML W3C

Схема, написанная на любом поддерживаемом языке схемы, может быть преобразована в любой из поддерживаемых языков схем, за исключением того, что W3C XML Schema поддерживается только для вывода, а не для ввода.

Trang также может вывести схему из одного или нескольких примеров XML-документов.

Ссылка для скачивания

  • 0
    Trang также является инструментом, интегрированным в OxygenXML, чтобы сделать вывод XSD из одного или нескольких документов XMl. С первой попытки здесь, кажется, работает хорошо.
  • 4
    Если все, что вам нужно, это сгенерировать xsd из файла xml, trang - лучшее, быстрое и простое ИМХО.
Показать ещё 3 комментария
14

В VS2010, если вы загрузите XML файл в редактор, щелкните меню XML → Create Schema.

  • 2
    И в более высоких версиях
11

Также существует XML schema learner, который доступен на Github.

Может потребоваться несколько xml файлов и извлечь общий XSD из всех этих файлов.

  • 1
    Имейте в виду, что этот инструмент написан на php, поэтому его нетривиально настроить.
  • 5
    @ 79E09796 Установка cli php с помощью sudo apt-get install php5-cli и запуск ./learn --help --- На самом деле я не вижу разницы между этим и инструментом, написанным на java, python или ruby :)
Показать ещё 2 комментария
10

Если у вас установлен .Net, инструмент для генерации XSD-схем и классов уже включен по умолчанию.
Для меня инструмент XSD установлен в следующей структуре. Это может различаться в зависимости от вашего каталога установки.

C:\Program Files\Microsoft Visual Studio 8\VC>xsd
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.

xsd.exe -
   Utility to generate schema or class files from given source.

xsd.exe <schema>.xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/s] [/uri:]
xsd.exe <assembly>.dll|.exe [/outputdir:] [/type: [...]]
xsd.exe <instance>.xml [/outputdir:]
xsd.exe <schema>.xdr [/outputdir:]

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

Я обычно беру XML-документ, который мне нужен, проталкиваю его через инструмент XSD с помощью флага /o:<your path> для создания схемы (xsd), а затем перетаскивает файл xsd через инструмент с помощью флагов /classes /L:VB (or CS) /o:<your path> чтобы получить классы, которые я могу импортировать и использовать в своих повседневных проектах .Net

6

Если вы хотите только XSD, у LiquidXML есть бесплатная версия, которая делает XSD, и у нее есть графический интерфейс, поэтому вы можете настроить XSD, если хотите. В любом случае, в наши дни я пишу свои собственные XSD вручную, но все это благодаря этому приложению.

http://www.liquid-technologies.com/

4

если вы работаете в java-мире - идея intelliJ также имеет обширную поддержку xml, включая генерацию xsd и samle xml от поколения xsd, а также с помощью плагинов вы можете получить отладчики xslt. - особенно приятно, если вы планируете использовать такие инструменты, как jaxb впоследствии.

  • 2
    И это также доступно в бесплатной общественной версии Idea.
3

Это старый поток, но я подумал, что может быть полезно опубликовать эту ссылку: просто нашел этот инструмент: xsd-gen Генерировать XML-схему из XML

и он просто сделал то, что мне нужно.

3

Altova XmlSpy делает это хорошо - вы можете найти обзор здесь

Ещё вопросы

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