Sam*_*ick 176
在Visual Studio 2008 SP1和更高版本中,XML Schema Explorer可以创建包含一些基本样本数据的XML文档:

Flo*_*ser 126
在最新版本的免费和开源Eclipse IDE中,您可以从DTD和XSD文件生成XML文档.右键单击给定的*.dtd或*.xsd文件,然后选择"生成 - > XML文件...".您可以选择要生成的根元素以及是否应生成可选属性和元素.
当然,您也可以使用Eclipse来创建和编辑DTD和XSD架构文件.而且您不需要安装任何插件.它包含在标准分发中.
yam*_*ass 32
对于Intellij Idea用户:
看一下Tools - > XML Actions

似乎工作得很好(据我测试过).
编辑:
正如@naXa所提到的,您现在也可以右键单击XSD文件并单击"从XSD架构生成XML文档..."
lev*_*and 29
我认为Oxygen(http://www.oxygenxml.com/)也是如此,但这是另一种商业产品.虽然这是一个很好的...我强烈建议任何人做很多XML工作.它也有一个很好的Eclipse插件.
我相信有一个免费的,功能齐全的30天试用版.
小智 12
Sourceforge.net上提供的处理器将为任何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
小智 10
您可以使用XML实例生成器,它是Sun/Oracle多模式验证器的一部分.
这是README.txt声明:
Sun XML Generator是一个Java工具,用于从多种模式生成各种XML实例.它支持DTD,RELAX命名空间,RELAX Core,TREX和W3C XML Schema Part 1的子集.[...]
这是一个命令行工具,可以从模式生成有效和无效实例.它可用于为需要符合特定模式的XML应用程序生成测试用例.
xmlgen.zip从msv下载页面下载并解压缩并运行以下命令以获取详细的使用说明:
java -jar xmlgen.jar -help
该工具似乎是在BSD许可下发布的; 源代码可以从这里访问
小智 7
似乎没人能够回答这个问题到目前为止:)
我使用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);
Run Code Online (Sandbox Code Playgroud)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
将所有内容转换为XML非常简单:
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
236368 次 |
| 最近记录: |