我有一个看起来像这样的xml文件:
<Model>
<Class name="">
<Attribute name="" type =""/>
<Attribute\>
<Method name="" returnType=""/>
</Class>
</Model>
我想知道如何从xml生成Java / C ++类。我尝试过使用xjc(使用AltovaXmlSpy生成模式),但我得到的输出为每个Class,Attribute和Mehthod创建一个类,而不是将方法和属性放在Class中。
感谢任何帮助。
答案 0 :(得分:0)
在解析XML时使用CodeModel构建类,然后将其输出到文件中。保证编译(如果失败,则会产生有意义的错误!)。
Maven依赖:
<dependency>
<groupId>com.sun.codemodel</groupId>
<artifactId>codemodel</artifactId>
<version>2.6</version>
</dependency>
样本用法:
JCodeModel cm = new JCodeModel();
JDefinedClass clazz = cm._class("my.package.MyClass");
JMethod method = clazz.method(JMod.PUBLIC, typeOfReturn, "nameOfMethod");
JBlock body = method.body();
// ... add fields, methods, set return types, ...
// write all in-memory classes to file, with import-blocks and everything
cm.build(destinationDirectory);
答案 1 :(得分:0)
如果从xml生成xsd,则可以使用jaxb或visual studio生成类。这在另一个问题中讨论。在这里阅读:
答案 2 :(得分:0)
使用此代码获取类名和属性名称
NodeList stdCol = doc.getElementsByTagName("Model");
for(int s=0; s<stdCol.getLength() ; s++){
Element el = (Element)stdCol.item(s);
NodeList stdClass = el.getElementsByTagName("Class ");
for(int k=0; k<stdClass .getLength() ; k++){
Element mapEntry = (Element)stdClass .item(k);
NodeList stdAttribute = mapEntry.getElementsByTagName("Attribute ");
等等