如何从他们的DTD或XSD生成示例XML文档?

我们正在开发一个涉及大量XML转换的应用程序。 我们没有任何正确的输入测试数据本身,只有DTD或XSD文件。 我们想从这些文件中自行生成我们的测试数据。 有一个简单/免费的方法来做到这一点?

编辑

显然没有免费的工具,我同意OxygenXML是最好的工具之一。

我认为Oxygen( http://www.oxygenxml.com/ )也可以,但这是另一个商业产品。 这是一个很好的,但是…我强烈建议任何人做大量的XML工作。 它也有一个很好的Eclipse插件。

我相信有一个免费的,功能齐全的30天试用版。

在Visual Studio 2008 SP1及更高版本中, XML Schema Explorer可以使用一些基本的示例数据创建一个XML文档:

  1. 打开您的XSD文档
  2. 切换到XML模式资源管理器
  3. 右键单击根节点并选择“Generate Sample Xml”

XML模式资源管理器的屏幕截图

在最新版本的免费和开源Eclipse IDE中,您可以从DTD和XSD文件生成XML文档。 右键单击给定的* .dtd或* .xsd文件,然后选择“生成 – > XML文件…”。 您可以选择要生成的根元素以及是否应该生成可选的属性和元素。

当然,您也可以使用Eclipse来创建和编辑您的DTD和XSD模式文件。 而且你不需要安装任何插件。 它包含在标准分布中。

对于Intellij Idea用户:查看工具 – > XML操作

在这里输入图像描述

似乎工作得很好(据我测试)。

Sourceforge.net上可用的camprocessor将为任何XSD执行xml测试用例生成。 有一个教程可以告诉你如何生成自己的测试示例 – 包括使用内容提示来确保实际的示例,而不仅仅是随机垃圾。

该教程可以在这里找到: http : //www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

有关该工具的更多信息 – 使用OASIS内容组装机制(CAM)标准将您的XSD重构为更好的XSLT结构 – 可以从资源网站http://www.jcam.org.uk上找到;

享受,DW

您可以使用属于Sun / Oracle多模式验证程序的XML实例生成器 。

它的README.txt指出:

Sun XML Generator是一个Java工具,用于从多种模式生成各种XML实例。 它支持DTD,RELAX Namespace,RELAX Core,TREX和W3C XML Schema Part 1的一个子集。[…]

这是一个可以从模式生成有效和无效实例的命令行工具。 它可以用于生成需要符合特定模式的XML应用程序的测试用例。

从msv下载页面下载并解压缩xmlgen.zip并运行以下命令以获取详细的使用说明:

java -jar xmlgen.jar -help

该工具似乎是在BSD许可下发布的; 源代码可以从这里访问

XMLSpy为你做,虽然这不是免费的…

我相信Liquid Xml Studio是为你做的,而且是免费的,但是我没有亲自用它来创建测试数据。

似乎没有人能够回答这个问题:)

我使用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); 

XML-XIG:XML实例生成器

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

这个开源会很有帮助。

您也可以使用XMLPad(免费使用)在这里http://www.wmhelp.com找到您的XML样本。; 从菜单:XSD – >生成示例XML文件。

Microsoft Office具有“ InfoPath ”,它将XSD作为导入,并让您快速轻松地定义用于创建XML文件的基于表单的编辑器。 它有两种模式 – 一种是定义表单的模式,另一种是填写表单来创建XML文件的模式。 我相信它是在Office 2003中首次出现的,大多数人都不会安装它。 这让我很震惊,我有多喜欢它。

微软已经发布了一个“文档生成器”工具作为示例。 这篇文章详细介绍了示例应用程序的体系结构和操作。

如果您只想运行示例生成工具, 请单击此处并安装MSI。

免费。 源是可用的。 需要.NET Framework运行。 仅适用于XSD。 (不放松NG或DTD)。

XMLBlueprint 7.5可以执行以下操作: – 从dtd生成示例xml – 从放宽模式生成示例xml – 从xml模式生成示例xml

SoapUI的开源版本可以从WSDL(包含XSD类型定义)生成SOAP请求,所以看起来像是这个功能的开源实现。 不幸的是,我还没有想出哪个库用于这个。

Liquid XML Studio有一个XML Sample Generator向导,它将从XML Schema构建示例XML文件。 结果数据似乎符合架构(它只是不能生成正则表达式模式的数据)。

从XSD生成XML示例

OpenXSD库提到它们支持基于XSD生成XML实例。 检查出来。

为了完整起见 ,我将添加http://code.google.com/p/jlibs/wiki/XSInstance ,这个类似(但是Java特定的)问题中提到: 任何用于从XSD生成Sample XML的Java“API”?

XML蓝图也是这样; 说明在这里

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

这不是免费的,但有10天的免费试用; 它似乎快速和高效; 不幸的是,它只是Windows。

Interesting Posts