Answers:
我认为Oxygen(http://www.oxygenxml.com/)也能做到这一点,但这是另一种商业产品。不过,这是一个不错的选择……我强烈建议所有从事XML工作的人使用它。它也带有一个不错的Eclipse插件。
我确实相信有30天的免费免费试用。
在Visual Studio 2008 SP1和更高版本中,XML架构资源管理器可以使用一些基本的示例数据创建XML文档:
在免费和开放源代码Eclipse IDE的最新版本中,您可以从DTD和XSD文件生成XML文档。右键单击给定的* .dtd或* .xsd文件,然后选择“生成-> XML文件...”。您可以选择要生成的根元素,以及是否应生成可选的属性和元素。
当然,您也可以使用Eclipse创建和编辑DTD和XSD模式文件。而且您不需要安装任何插件。它包含在标准发行版中。
对于Intellij Idea用户:
看看工具-> XML操作
似乎工作得很好(据我测试)。
编辑:
如@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 Multi-Schema Validator的一部分。
它的README.txt状态为:
Sun XML Generator是一个Java工具,可以从几种模式中生成各种XML实例。它支持DTD,RELAX命名空间,RELAX核心,TREX和W3C XML模式第1部分的子集。[...]
这是一个命令行工具,可以从架构生成有效实例和无效实例。它可用于为需要符合特定模式的XML应用程序生成测试用例。
xmlgen.zip
从msv下载页面下载并解压缩,然后运行以下命令以获取详细的使用说明:
java -jar xmlgen.jar -help
该工具似乎是根据BSD许可发布的;可从此处访问源代码
--example
文件来包含可用于生成新示例文件的令牌。需要一个样本来制作样本!不容易...
到目前为止似乎没有人能够回答这个问题:)
我使用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文件。
NullPointerException
。
Liquid XML Studio有一个XML Sample Generator向导,它将根据XML Schema 生成示例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生成器
debate, arguments, polling, or extended discussion