Сведения о вопросе

Martincow

02:29, 12th August, 2020

Теги

xml   xsd   dtd   test-data    

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

Просмотров: 1914   Ответов: 19

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

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

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



  Сведения об ответе

SKY

00:39, 13th August, 2020

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

  1. Откройте документ XSD
  2. Переключитесь на XML Schema Explorer
  3. Щелкните правой кнопкой мыши корневой узел и выберите "Generate Sample Xml"

Screenshot of the XML Schema Explorer


  Сведения об ответе

PHPH

11:02, 4th August, 2020

В последних версиях free и open source Eclipse IDE вы можете создавать XML документов из DTD и XSD файлов. Щелкните правой кнопкой мыши на заданном *.dtd или *.xsd файл и выберите "Generate -> XML File...". Вы можете выбрать, какой корневой элемент следует создать и следует ли создавать дополнительные атрибуты и элементы.

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


  Сведения об ответе

P_S_S

17:32, 1st August, 2020

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

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

enter image description here

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

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

Как уже упоминалось @naXa, теперь вы можете также щелкнуть правой кнопкой мыши на файле XSD и нажать "Generate XML Document from XSD Schema..."


  Сведения об ответе

SEEYOU

21:03, 23rd August, 2020

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

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


  Сведения об ответе

nYU

01:41, 24th August, 2020

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

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

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

Наслаждайтесь, DW


  Сведения об ответе

pumpa

13:22, 17th August, 2020

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

Это государства README.txt :

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

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

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

java -jar xmlgen.jar -help

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


  Сведения об ответе

PROGA

16:19, 17th August, 2020

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

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


  Сведения об ответе

DO__IT

06:11, 13th August, 2020

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

Я использую EclipseLink в MOXy для динамического создания классов привязки, а затем рекурсивно пройти через связанные типы. Он несколько тяжеловат, но позволяет вводить значение 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);


  Сведения об ответе

PIRLO

16:17, 27th August, 2020

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


  Сведения об ответе

прога

16:37, 5th August, 2020

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

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

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


  Сведения об ответе

qwerty101

08:04, 2nd August, 2020

Корпорация Майкрософт опубликовала инструмент "document generator" в качестве примера. В этой статье довольно подробно описывается архитектура и работа примера приложения.

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

Это бесплатно. Источник доступен. Требует запуска фреймворка .NET. Работает только с XSDs. (не расслабляться NG или DTD).


  Сведения об ответе

$DOLLAR

21:12, 21st August, 2020

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


  Сведения об ответе

dump

12:31, 15th August, 2020

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

Generate an XML Sample from an XSD


  Сведения об ответе

Chhiki

13:40, 4th August, 2020

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


  Сведения об ответе

nYU

01:39, 3rd August, 2020

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


  Сведения об ответе

прога

10:22, 13th August, 2020

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


  Сведения об ответе

LIZA

22:51, 19th August, 2020

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


  Сведения об ответе

lourence

21:53, 6th August, 2020

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

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

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


  Сведения об ответе

pumpa

15:02, 1st August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться