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

146

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

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

Мэтт Диллард
источник

Ответы:

65

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

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

Danimal
источник
1
вау, месяцы спустя вы указали мне на отличное решение для быстрого преобразования XDR в XSD! Спасибо!
Бетлакшми
6
Мне было трудно найти загрузку для этого инструмента (xsd.exe), но она уже была в моей системе в C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Просто подумал, что поделюсь, если это кому-нибудь поможет.
2012 г.
2
Если у кого-то не установлена ​​Visual Studio, вот альтернативная ссылка для загрузки xsd: juliankay.com/development/download-xsd-exe
MD
5
Каталог кажется xsd.exe, изменились в Windows 7. У меня есть это во многих Microsoft SDKsкаталогах, среди которых этот один (так , кажется, не обязательно зависит от Visual Studio больше?): C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. Мне пришлось запустить его в каталоге, содержащем xml, чтобы предотвратить ошибку о «недопустимых символах в пути», но это может быть связано с длинным именем файла, которое у меня есть.
Yahoo серьезно
Кто-нибудь еще испытывает проблемы с использованием инструмента логического вывода MS XSD, создающего исключение OutOfMemoryException для XML-файла размером 200 МБ с еще более 8 ГБ свободной оперативной памяти?
Фелипе Сабино
54

Вы можете использовать открытый исходный код и кроссплатформенную опцию: inst2xsd из Apache XMLBeans . Я нахожу это очень полезным и легким.

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

Dario
источник
отличный совет, который действительно мне очень помог, спасибо!
IAdapter
2
OMG Это намного лучше, чем вся эта фигня Powershell! Тем более, что у меня не было XSD-файла!
Хлоя
3
работал как charm :: cd <xml_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
дневник,
3
Обратите внимание, что XMLBeans был перемещен в attic.apache.org , где находятся устаревшие проекты Apache. Другими словами, он не обновлялся с 2012 года.
Magnilex
51

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

С сайта Trang:

Транг конвертирует между различными языками схемы для XML. Поддерживает следующие языки

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

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

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

Ссылка на скачивание

Derferman
источник
Trang также является инструментом, интегрированным в OxygenXML, чтобы сделать вывод XSD из одного или нескольких документов XMl. С первой попытки здесь, кажется, работает хорошо.
Redcalx
4
Если все, что вам нужно, это сгенерировать xsd из файла xml, trang - лучшее, быстрое и простое IMHO.
Кривер
2
Транг документация немного тонкая. Чтобы сгенерировать схему, запустите $ trang file.xml schema.xsd.
Джо Морнин
на окнах: java -jar trang.jar file.xml schema.xsd
Алексей Обухов
Имея подструктуры, которые появляются в одной и той же форме в разных местах в моем образце XML, Транг отлично справился с задачей обнаружения повторения и создания минимального XSD, что мне и было нужно. Очень хорошо!
Томислав Накич-Альфиревич
17

В VS2010, если вы загружаете файл XML в редактор, выберите меню XML >> Создать схему.

Натан Доннеллан
источник
3
И в более высоких версиях
Jay Jay Jay
12

Там также есть то, XML schema learnerчто доступно на Github .

Это может занять несколько XML-файлов и извлекать общий XSD из всех этих файлов .

edorian
источник
1
Имейте в виду, что этот инструмент написан на php, поэтому его нетривиально настроить.
79E09796
5
@ 79E09796 Установка CliPP с sudo apt-get install php5-cliи запуска ./learn --help--- Я не вижу разницы между этим и инструментом, написанным на Java, Python или
Ruby
1
только что попробовал под windows - отлично работал с php 5.4 без какой-либо установки. Ученики php и XML Schema просто разархивировали и выполнили полные пути;)
vak
Небольшой комментарий к localityполю: если имя поля используется в нескольких местах в XML для обозначения различных элементов, требуется большее localityзначение, чем 1, например, root/itemи root/something/itemдля разных типов, тогда --locality 2как минимум требуется
shadi
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.
lbalazscs
3

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

Гарт Гилмор
источник
3

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

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

v_e
источник