如何从xml生成pojo类(在jvm中)?

时间:2014-01-31 12:52:16

标签: java xml pojo

我有一个xml:

<Employee>
   <name>xyz</name>
   <age>50</age>
   <salary>111</salary>
</Employee>

现在如何从这个xml中在jvm中动态创建一个类?如何为这个类创建setter / getter?

注意::以后这些xml元素会增加。

2 个答案:

答案 0 :(得分:1)

通常,XML绑定的java源文件是使用某种XML模式或DTD生成的,用于预期的数据格式。

在这种情况下,建议是定义XML模式,例如:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      targetNamespace="http://test.org/test/Employee">
<xsd:element name="employee">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string" />
            <xsd:element name="age" type="xsd:integer" />
            <xsd:element name="salary" type="xsd:double" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

此schema.xsd可用作JAXB(xjc命令)或Castor等生成器的输入,如图所示here

生成器输出是可配置的,新的源应该易于集成到现有项目,或编译和加载。本主题将讨论here

答案 1 :(得分:0)

以下是使用JDOM2解析XML文件的示例

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;

public class Test {

  public static void main(String[] args) throws Exception {
    Document document = new SAXBuilder().build(Test.class.getResourceAsStream("test.xml"));

    for(Element elt :document.getRootElement().getChildren()) {
      System.out.println("tag : "+elt.getName());
      System.out.println("value : " + elt.getText()+"\n");
    }
  }
}

输出:

tag : name
value : xyz

tag : age
value : 50

tag : salary
value : 111

之后,你可以

  • 将值存储在Map OR
  • 生成一个.java文件(我建议通过Freemarker完成)并编译它。