Мы разрабатываем приложение, которое включает в себя значительное количество преобразований XML. У нас нет правильных входных тестовых данных как таковых, только файлы DTD или XSD. Мы хотели бы сами генерировать наши тестовые данные из этих файлов. Есть ли простой / бесплатный способ сделать это?
редактировать
По-видимому, для этого нет бесплатных инструментов, и я согласен, что OxygenXML - один из лучших инструментов для этого.
Я думаю, что Oxygen ( http://www.oxygenxml.com/ ) тоже это делает, но это еще один коммерческий продукт. Хотя это неплохо ... Я настоятельно рекомендую его всем, кто много занимается XML. Он также входит в хороший плагин Eclipse.
Я верю, что есть бесплатная, полнофункциональная 30-дневная пробная версия.
XMLSpy делает это для вас, хотя это не бесплатно ...
Я считаю, что Liquid Xml Studio делает это для вас и является бесплатным, но я лично не использовал его для создания тестовых данных.
postiveinteger
поле - вставив *ERROR*
вместоВ Visual Studio 2008 с пакетом обновления 1 (SP1) и более поздних версиях XML Schema Explorer может создавать XML-документ с некоторыми основными примерами данных:
- Откройте документ XSD
- Переключиться на XML Schema Explorer
- Щелкните правой кнопкой мыши корневой узел и выберите «Создать образец XML».
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
Вы можете использовать генератор 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; исходный код доступен отсюда
xmlgen.zip
только в nigthly
каталоге. Я подтверждаю неспособность создать образец из моего xsd. --example
файл, содержащий токены, которые можно использовать для генерации нового файла примера. Требуется образец, чтобы сделать образец! Не просто ...В качестве примера Microsoft опубликовала инструмент «Генератор документов». Эта статья описывает архитектуру и работу примера приложения в некоторых деталях.
Если вы просто хотите запустить инструмент генерации образцов, нажмите здесь и установите MSI.
Это бесплатно. Источник доступен. Требуется .NET Framework для запуска. Работает только с XSD. (не Relax NG или DTD).
В Microsoft Office есть InfoPath , который принимает XSD в качестве импорта и позволяет быстро и легко определить редактор на основе форм для создания файлов XML. Он имеет два режима - один, в котором вы определяете форму, и другой режим, в котором вы создаете файл XML, заполняя форму. Я полагаю, что это впервые пришло с Office 2003, и большинство людей никогда не устанавливают его. Меня шокирует, насколько мне это нравится.
В последних версиях Eclipse IDE с открытым исходным кодом вы можете создавать XML-документы из файлов DTD и XSD. Щелкните правой кнопкой мыши на файле * .dtd или * .xsd и выберите «Создать -> Файл XML ...». Вы можете выбрать, какой корневой элемент генерировать и следует ли создавать дополнительные атрибуты и элементы.
Конечно, вы можете использовать Eclipse для создания и редактирования ваших файлов схем DTD и XSD. И вам не нужно устанавливать какие-либо плагины. Это входит в стандартную поставку.
XMLBlueprint 7.5 может выполнять следующие действия: - генерировать образец xml из dtd - генерировать образец xml из схемы relax ng - генерировать образец xml из схемы xml
В Liquid XML Studio имеется мастер генератора образцов XML, который будет создавать образцы файлов XML из схемы XML. Получающиеся данные, кажется, соответствуют схеме (это просто не может генерировать данные для шаблонов регулярных выражений).
Версия SoapUI с открытым исходным кодом может генерировать SOAP-запросы из WSDL (который содержит определения типов XSD), поэтому, похоже, существует реализация этой функциональности с открытым исходным кодом. К сожалению, я не выяснил, какая библиотека используется для этого.
XML-XIG: генератор экземпляров XML
http://xml-xig.sourceforge.net/
Этот открытый источник был бы полезен.
NullPointerException
. Похоже, что пока никто не смог ответить на вопрос :)
Я использую 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);
В библиотеке OpenXSD упоминается, что они поддерживают создание экземпляров XML на основе XSD. Проверь это.
Для полноты картины я добавлю http://code.google.com/p/jlibs/wiki/XSInstance , о котором упоминалось в аналогичном (но специфичном для Java) вопросе: есть ли какой-нибудь Java-API для генерации образца XML из XSD?
Вы также можете использовать XMLPad (бесплатно), найденный здесь http://www.wmhelp.com, для генерации ваших образцов XML. Из меню: XSD -> создать образец XML-файла.
Для пользователей Intellij Idea:
Посмотрите на Инструменты -> Действия XML
Кажется, работает очень хорошо (насколько я проверял).
Редактировать:
Как уже упоминалось @naXa, теперь вы также можете щелкнуть правой кнопкой мыши по файлу XSD и выбрать «Создать документ XML из схемы XSD ...»
XML Blueprint также делает это; инструкции здесь
http://www.xmlblueprint.com/help/html/topic_170.htm
Это не бесплатно, но есть 10-дневная бесплатная пробная версия; кажется быстрым и эффективным; к сожалению это только винда.
Также есть http://xsd2xml.com/ , онлайн генератор XSD to XML
debate, arguments, polling, or extended discussion