Как генерировать образцы XML-документов из их DTD или XSD?

Мы разрабатываем приложение, которое включает в себя значительное количество преобразований XML. У нас нет правильных входных тестовых данных как таковых, только файлы DTD или XSD. Мы хотели бы сами генерировать наши тестовые данные из этих файлов. Есть ли простой / бесплатный способ сделать это?

редактировать

По-видимому, для этого нет бесплатных инструментов, и я согласен, что OxygenXML - один из лучших инструментов для этого.

19.08.2008 22:29:47
Я не вижу ответов на эти вопросы, которые не соответствуют формату вопросов и ответов, или запрашиваютdebate, arguments, polling, or extended discussion
mjn 2.05.2013 11:47:10
19 ОТВЕТОВ
РЕШЕНИЕ

Я думаю, что Oxygen ( http://www.oxygenxml.com/ ) тоже это делает, но это еще один коммерческий продукт. Хотя это неплохо ... Я настоятельно рекомендую его всем, кто много занимается XML. Он также входит в хороший плагин Eclipse.

Я верю, что есть бесплатная, полнофункциональная 30-дневная пробная версия.

29
26.08.2008 14:05:46
У меня есть несколько XSD, которые, в свою очередь, наследуют схемы от разных XSD, и мне нужно сгенерировать XML-файл для целей тестирования из этого XSD, для этого я использую oxygenXML, но когда я пытаюсь это сделать, он не работает для меня и он говорит, пожалуйста, определите корневой узел, но это не позволяет мне сделать это. Так что, если кто-то работал с oxygenXML, предложите, что может быть для этого?
Rachel 21.10.2009 21:41:28
Спасибо Левеланд. Это ответило и на мой вопрос! Если вы хотите прийти и ответить на мой вопрос: stackoverflow.com/questions/7041388/… , я был бы более чем рад отметить ваш ответ.
Eric H 12.08.2011 14:50:31

XMLSpy делает это для вас, хотя это не бесплатно ...

Я считаю, что Liquid Xml Studio делает это для вас и является бесплатным, но я лично не использовал его для создания тестовых данных.

10
9.09.2016 08:11:03
Он генерирует что-то, но вы не имеете большого контроля над ним: вы можете выбрать элемент верхнего уровня и некоторые общие параметры, но вы не можете использовать XMLSpy для генерации набора тестовых случаев со многими вариантами и т. Д.
Hans-Peter Störr 23.12.2008 10:05:16
XMLSpy выглядел хорошо, но сгенерировал xml, который затем не прошел проверку на xsd, который использовался для его создания Провал. Это также натолкнуло на postiveintegerполе - вставив *ERROR*вместо
Tim Abell 7.07.2016 12:56:40

В Visual Studio 2008 с пакетом обновления 1 (SP1) и более поздних версиях XML Schema Explorer может создавать XML-документ с некоторыми основными примерами данных:

  1. Откройте документ XSD
  2. Переключиться на XML Schema Explorer
  3. Щелкните правой кнопкой мыши корневой узел и выберите «Создать образец XML».

Снимок экрана проводника XML-схемы

179
21.09.2011 10:28:41
да, это самый простой способ. Откройте XSD, переключитесь в XML Schema Explorer, выберите корневой узел, щелкните правой кнопкой мыши и выберите «Создать образец XML».
balint 18.07.2009 16:58:33
+1 Спасибо, Сэм, Уорик и @ Балинт. Это было действительно полезно!
jessegavin 20.05.2011 17:37:04
Я использовал это с VS2008, но я не могу найти это в VS2010. Кто-нибудь может подтвердить, что это все еще существует?
Simon 1.02.2013 07:27:56
То же, что и Саймон: я не могу найти это и в VS2010. Согласно MSDN, он все еще должен быть там, но он просто нигде не будет отображаться в интерфейсе ... :-(
Martijn 8.02.2013 15:20:01
@Simon: «Генерировать образец XML» вы получаете, только если щелкнуть правой кнопкой мыши один из элементов в проводнике схемы. Элементы изображены графически через зеленые левые / правые угловые скобки: «<>». Вы, вероятно, щелкаете правой кнопкой мыши по типу, и генерирующее сообщение будет генерировать его только для элементов (что имеет смысл).
Miguel Sevilla 8.04.2013 16:53:32

Camprocessor, доступный на Sourceforge.net, будет выполнять генерацию тестовых примеров XML для любого XSD. Существует учебное пособие, которое покажет вам, как создавать собственные тестовые примеры, включая использование подсказок по содержанию для обеспечения реалистичных примеров, а не только случайных ненужных.

Учебное пособие доступно здесь: http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

Более подробную информацию об инструменте - который использует стандарт механизма сборки контента (CAM) OASIS для преобразования вашего XSD в более дружественную структуру XSLT - можно найти на веб-сайте ресурса - http://www.jcam.org.uk

Наслаждайся, DW

12
10.11.2008 02:08:21
Прямая ссылка на Sourceforge.net скачать: sourceforge.net/projects/camprocessor
Jay Mooney 10.11.2008 02:12:15
@Pyderman - это ваши настройки - посмотрите, как их изменить.
Ghoti 30.03.2017 08:31:34

Вы можете использовать генератор XML-экземпляров, который является частью мультисхемного валидатора Sun / Oracle .

Это README.txt гласит:

Sun XML Generator - это инструмент Java для генерации различных экземпляров XML из нескольких видов схем. Он поддерживает DTD, пространство имен RELAX, ядро ​​RELAX, TREX и подмножество XML-схемы W3C, часть 1. [...]

Это инструмент командной строки, который может генерировать как действительные, так и недействительные экземпляры из схем. Его можно использовать для генерации тестовых случаев для приложений XML, которые должны соответствовать определенной схеме.

Загрузите и распакуйте xmlgen.zipсо страницы загрузки msv и выполните следующую команду, чтобы получить подробные инструкции по использованию:

java -jar xmlgen.jar -help

Инструмент, кажется, выпущен под лицензией BSD; исходный код доступен отсюда

10
26.10.2012 12:52:17
Очень хорошо! Немного ограничен, хотя. Я попробовал это на XSD, который импортирует другой XSD, и это не удалось. Но на DTD это работает очень хорошо. Спасибо!
lindelof 15.01.2009 11:00:12
Текущие ссылки: домашняя страница , загрузки . xmlgen.zipтолько в nigthlyкаталоге. Я подтверждаю неспособность создать образец из моего xsd.
Jarekczek 7.09.2012 11:55:08
В моем случае необходимо было использовать --exampleфайл, содержащий токены, которые можно использовать для генерации нового файла примера. Требуется образец, чтобы сделать образец! Не просто ...
The Red Pea 23.03.2016 06:38:01
Ссылки на java.net в основном мертвы.
RedGrittyBrick 17.10.2017 10:10:42

В качестве примера Microsoft опубликовала инструмент «Генератор документов». Эта статья описывает архитектуру и работу примера приложения в некоторых деталях.

Если вы просто хотите запустить инструмент генерации образцов, нажмите здесь и установите MSI.

Это бесплатно. Источник доступен. Требуется .NET Framework для запуска. Работает только с XSD. (не Relax NG или DTD).

5
3.06.2009 15:53:58
Выше ссылка на статью в MSDN под названием «Генерация XML-документов из XML-схем»
Sam Warwick 21.05.2009 14:40:49
Установщик сбрасывает кучу кода C # на ваш компьютер. Просто скопируйте их в LinqPad, и у вас будет бесплатный генератор экземпляров XML. Та да!
Sean Kearon 16.02.2011 10:20:03
9 лет спустя это все еще отлично работает для XSD.
Mikanikal 25.09.2018 16:08:29

В Microsoft Office есть InfoPath , который принимает XSD в качестве импорта и позволяет быстро и легко определить редактор на основе форм для создания файлов XML. Он имеет два режима - один, в котором вы определяете форму, и другой режим, в котором вы создаете файл XML, заполняя форму. Я полагаю, что это впервые пришло с Office 2003, и большинство людей никогда не устанавливают его. Меня шокирует, насколько мне это нравится.

4
21.05.2009 14:29:33

В последних версиях Eclipse IDE с открытым исходным кодом вы можете создавать XML-документы из файлов DTD и XSD. Щелкните правой кнопкой мыши на файле * .dtd или * .xsd и выберите «Создать -> Файл XML ...». Вы можете выбрать, какой корневой элемент генерировать и следует ли создавать дополнительные атрибуты и элементы.

Конечно, вы можете использовать Eclipse для создания и редактирования ваших файлов схем DTD и XSD. И вам не нужно устанавливать какие-либо плагины. Это входит в стандартную поставку.

126
17.07.2009 08:58:04
Спасибо! Eclipse бесплатен, и это было идеальное решение.
Akku 26.01.2011 13:15:43
Ребята, вы случайно не знаете, какая функция Eclipse предоставляет эту функцию? В моем подменю «Генерировать» единственным элементом является «Классы JAXB».
otto.poellath 10.03.2011 16:27:24
Вам нужно установить проект Web Tools (смотрите Help-> Install New Software), чтобы получить эти опции.
pwaring 13.05.2011 15:54:24
Eclipse кажется хорошим вариантом, но я не смог заставить поколение следовать импортированным XSD. Например, если бы у меня был XSD, описывающий 3 элемента, и одним из них был complexType, который был определен в ссылочном / импортированном XSD, он не сгенерировал бы для этого элемента. Есть идеи?
David Hergert 16.12.2011 15:55:42
@DavidHergert Простой обходной путь - создание типа заглушки.
Adam Matan 30.04.2013 11:19:59

XMLBlueprint 7.5 может выполнять следующие действия: - генерировать образец xml из dtd - генерировать образец xml из схемы relax ng - генерировать образец xml из схемы xml

1
12.03.2010 08:55:47

В Liquid XML Studio имеется мастер генератора образцов XML, который будет создавать образцы файлов XML из схемы XML. Получающиеся данные, кажется, соответствуют схеме (это просто не может генерировать данные для шаблонов регулярных выражений).

Создать образец XML из XSD

1
7.03.2017 07:16:04

Версия SoapUI с открытым исходным кодом может генерировать SOAP-запросы из WSDL (который содержит определения типов XSD), поэтому, похоже, существует реализация этой функциональности с открытым исходным кодом. К сожалению, я не выяснил, какая библиотека используется для этого.

1
26.11.2010 12:06:26

XML-XIG: генератор экземпляров XML

http://xml-xig.sourceforge.net/

Этот открытый источник был бы полезен.

5
25.02.2011 07:30:06
Не очень удобно для пользователя. Бросает много исключений, не может заставить его работать после необъяснимого NullPointerException.
Jarekczek 7.09.2012 12:11:43

Похоже, что пока никто не смог ответить на вопрос :)

Я использую MOXy EclipseLink, чтобы динамически генерировать классы привязки, а затем рекурсивно проходить через связанные типы. Это несколько тяжело, но позволяет вводить значения XPath после создания экземпляра дерева объектов:

InputStream in = new FileInputStream(PATH_TO_XSD);
DynamicJAXBContext jaxbContext = 
            DynamicJAXBContextFactory.createContextFromXSD(in, null, Thread.currentThread().getContextClassLoader(), null);
DynamicType rootType = jaxbContext.getDynamicType(YOUR_ROOT_TYPE);
DynamicEntity root = rootType.newDynamicEntity();
traverseProps(jaxbContext, root, rootType, 0);

TraverseProps - довольно простой рекурсивный метод:

private void traverseProps(DynamicJAXBContext c, DynamicEntity e, DynamicType t, int level) throws DynamicException, InstantiationException, IllegalAccessException{
        if (t!=null) {
            logger.info(indent(level) + "type [" + t.getName() + "] of class [" + t.getClassName() + "] has " + t.getNumberOfProperties() + " props");
            for (String pName:t.getPropertiesNames()){
                Class<?> clazz = t.getPropertyType(pName);
                logger.info(indent(level) + "prop [" + pName + "] in type: " + clazz);
                //logger.info("prop [" + pName + "] in entity: " + e.get(pName));

                if (clazz==null){
                    // need to create an instance of object
                    String updatedClassName = pName.substring(0, 1).toUpperCase() + pName.substring(1);
                    logger.info(indent(level) + "Creating new type instance for " + pName + " using following class name: " + updatedClassName );
                    DynamicType child = c.getDynamicType("generated." + updatedClassName);
                    DynamicEntity childEntity = child.newDynamicEntity();
                    e.set(pName, childEntity);
                    traverseProps(c, childEntity, child, level+1);
                } else {
                    // just set empty value
                    e.set(pName, clazz.newInstance());
                }
            }
        } else {
            logger.warn("type is null");
        }
    }

Преобразовать все в XML довольно просто:

Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
7
2.06.2011 02:45:18

В библиотеке OpenXSD упоминается, что они поддерживают создание экземпляров XML на основе XSD. Проверь это.

0
19.12.2011 05:56:37
Можете ли вы опубликовать пример использования?
naXa 5.01.2018 12:32:05
Ссылка мертва. Пожалуйста, обновите это.
Lakshmikant Deshpande 2.05.2019 12:10:17

Для полноты картины я добавлю http://code.google.com/p/jlibs/wiki/XSInstance , о котором упоминалось в аналогичном (но специфичном для Java) вопросе: есть ли какой-нибудь Java-API для генерации образца XML из XSD?

0
23.05.2017 12:34:37

Вы также можете использовать XMLPad (бесплатно), найденный здесь http://www.wmhelp.com, для генерации ваших образцов XML. Из меню: XSD -> создать образец XML-файла.

7
4.01.2016 19:04:51
Я получаю переполнение стека или «WMHelp XmlPad перестал работать», когда я выбираю «Создать образец данных»
The Red Pea 22.03.2016 18:46:39

Для пользователей Intellij Idea:

Посмотрите на Инструменты -> Действия XML

введите описание изображения здесь

Кажется, работает очень хорошо (насколько я проверял).

Редактировать:

Как уже упоминалось @naXa, теперь вы также можете щелкнуть правой кнопкой мыши по файлу XSD и выбрать «Создать документ XML из схемы XSD ...»

32
6.01.2018 18:08:26
Есть ли способ указать количество элементов для генерации (для последовательностей)?
Nikita 1.03.2013 21:43:05
Я проверил каждое решение этой
FLX 22.09.2014 14:29:44
Не работает для меня в последней версии RubyMine (v. 7.0, на основе Intellij Idea) с XSD с большим количеством импорта. У меня нет ничего, кроме сообщения об ошибке.
Envek 30.11.2014 09:44:59
"Ошибка компиляции схемы"?
The Red Pea 22.03.2016 19:06:56
В более новых версиях щелкните правой кнопкой мыши XSD и выберите «Создать XML-документ из схемы XSD ...»
naXa 5.01.2018 12:30:20

XML Blueprint также делает это; инструкции здесь

http://www.xmlblueprint.com/help/html/topic_170.htm

Это не бесплатно, но есть 10-дневная бесплатная пробная версия; кажется быстрым и эффективным; к сожалению это только винда.

0
14.10.2012 15:31:48

Также есть http://xsd2xml.com/ , онлайн генератор XSD to XML

0
16.06.2018 13:43:03