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

编辑

显然没有免费的工具可以做到这一点,我同意 OxygenXML 是最好的工具之一。

有帮助吗?

解决方案

我认为氧气(http://www.oxygenxml.com/)也可以这样做,但那是另一种商业产品。这是一个很好的,不过...我强烈推荐给任何从事大量 XML 工作的人。它也有一个很好的 Eclipse 插件。

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

其他提示

在 Visual Studio 2008 SP1 及更高版本中 XML 模式浏览​​器 可以使用一些基本示例数据创建 XML 文档:

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

Screenshot of the XML Schema Explorer

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

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

对于 Intellij Idea 用户:

查看工具 -> XML 操作

enter image description here

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

编辑:

正如 @naXa 所提到的,您现在还可以右键单击 XSD 文件,然后单击“从 XSD 架构生成 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

您可以使用 XML 实例生成器,它是 Sun/Oracle 多模式验证器.

它的 README.txt 指出:

Sun XML发电机是一种Java工具,可从几种模式中生成各种XML实例。它支持DTD,放松名称空间,放松核心,Trex和W3C XML模式的子集第1部分。[...]

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

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

java -jar xmlgen.jar -help

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

XML间谍 为你做这件事,尽管这不是免费的......

我相信 液体Xml工作室 它为您做并且是免费的,但我个人还没有使用它来创建测试数据。

到目前为止似乎没有人能够回答这个问题:)

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

您还可以使用此处的 XMLPad(免费使用) http://www.wmhelp.com 生成您的 xml 样本。从菜单中:XSD -> 生成示例 XML 文件。

微软已经发布了一个“文档生成器”工具作为示例。 这是一篇文章 它详细描述了示例应用程序的架构和操作。

如果您只想运行示例生成工具, 点击这里 并安装 MSI。

免费。来源可用。需要 .NET Framework 才能运行。仅适用于 XSD。(不是 Relax NG 或 DTD)。

XML-XIG:XML实例生成器

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

这个开源会有帮助。

微软 Office 有 '信息路径',它将 XSD 作为导入,让您快速轻松地定义基于表单的编辑器来创建 XML 文件。它有两种模式 - 一种模式是您定义表单,另一种模式是您通过填写表单来创建 XML 文件。我相信它首先随 Office 2003 一起提供,但大多数人从未安装过它。我对它的喜欢程度感到震惊。

XMLBlueprint 7.5 可以执行以下操作:- 从DTD生成样品XML-从松弛NG模式生成样品XML-从XML架构生成样品XML

开源版本 肥皂用户界面 可以从 WSDL(包含 XSD 类型定义)生成 SOAP 请求,因此看起来有此功能的开源实现。不幸的是,我还没有弄清楚哪个库是用来做这个的。

Liquid XML Studio 有一个 XML 样本生成器 向导将从 XML 模式构建示例 XML 文件。生成的数据似乎符合架构(它只是无法生成正则表达式模式的数据)。

Generate an XML Sample from an XSD

开放XSD 库提到他们支持基于 XSD 生成 XML 实例。检查出。

为了完整起见,我将添加 http://code.google.com/p/jlibs/wiki/XSInstance, ,在一个类似的(但特定于 Java 的)问题中提到了这一点: 是否有 Java“API”可以从 XSD 生成示例 XML?

XML 蓝图也能做到这一点;此处说明

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

它不是免费的,但有 10 天的免费试用期;看起来又快又高效;不幸的是它仅限于Windows。

还有 http://xsd2xml.com/, ,一个在线 XSD 到 XML 生成器

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top