我想从我为Java应用程序编写的XML中创建模型类。 从我正在编写的XML转换自动生成的类有哪些好工具? 来自我的XML文件的示例。
<list name="NameValuePairListDefinition">
<member target="NameValuePair" />
</list>
<structure name="PositiveIntegerList">
<member name="list" target="PositiveIntegerListDefinition" />
</structure>
答案 0 :(得分:2)
如果您正在使用Java并想要生成类,我强烈建议您使用XMLbeans。它带有一些不错的实用程序,包括:
inst2xsd :给定xml,它会生成xsd
示例
inst2xsd -enumerations never message.xml
(将生成xsd文件并禁用任何相同类型的枚举)
scomp :将架构编译成 jar 文件,这意味着它会为您生成一个非常好的可重用库,其中包含一个类(或多个类)如果您没有在XML中定义任何内容,则基于模式的命名空间(或以 noNamespace.something 开头)
实施例
scomp -jar yourschema mySchema.xsd
(创建 xmltypes.jar - 这是你想要的jar,只需将其重命名为聪明的东西并将其用于双向解析以获取&amp;设置,读取和写入值)
最后,只需启动您的java IDE并为 scomp
然后,您可以使用xmldata加载,创建,存储,操作,因为它只是项目中的java对象; - )
根据您的小型XML代码段的 元素,您将使用大致如下的代码进行访问:
MyModel myModel = null;
try {
//full path to XML file
File modelXML = new File("Model.xml");
// Bind the incoming XML to an XMLBeans type.
myModel = MyModel.Factory.parse(modelXML);
}
catch (XmlException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
catch (FileNotFoundException e) { e.printStackTrace(); }
// Using the <structure> element.
Structure structure = myModel.getStructure();
Member member = structure.getMember();
String target = member.getTarget(); // "PositiveIntegerListDefinition"
注意:我还建议使用的元素名称不是保留的Java关键字,例如 list ,我不确定XMLBeans将如何处理它,但我假设它会或者重命名而不是重载。
这是一个可以派上用场的完整教程: http://xmlbeans.apache.org/documentation/tutorial_getstarted.html
我假设您使用的是简单的直接XML调用或基于REST的Web服务,但如果您决定使用类似SOAP的更冗长的内容,还可以轻松生成Apache CXF和Apache Axis2 SOAP XML消息或WSDL中的Java类。