我有一个用于配置一些规则的XML,它没有复杂的结构,但是这个配置是在我系统的任何地方使用的,所以我想解析这个XML到java对象和设计为单例模式,可以使用它直接将XML解密到Java对象,而不需要多写代码?
我做了一些关于Google的研究,知道JAXB是一个选择,我的应用只是一些读取规则的工具程序,然后遵循做事情,JAXB可以更广泛地用于Web服务,它适合我的项目?
如果是,最重要的问题是,我使用xjc根据xsd文件生成Java对象源类,在解组后我将直接获取这些configurationType对象,是否有必要再次转换(从JaxB类到我拥有的java pojo对象配置),我看到大多数编码器做了这个,但为什么?因为他们是一些数据,只是从对象生成到JAXB并复制到我们自己创建的POJO对象
JAXB是一个理想的解决方案。但是您不一定需要xsd和xjc。通常你没有xsd,但你知道你的xml是什么。简单分析你的xml,例如,
<customer id="100"> <age>29</age> <name>mkyong</name> </customer>
创建必要的模型类(es):
@XmlRootElement public class Customer { String name; int age; int id; public String getName() { return name; } @XmlElement public void setName(String name) { this.name = name; } public int getAge() { return age; } @XmlElement public void setAge(int age) { this.age = age; } public int getId() { return id; } @XmlAttribute public void setId(int id) { this.id = id; } }
尝试解散:
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Customer customer = (Customer) jaxbUnmarshaller.unmarshal(new File("C:\\file.xml"));
检查结果,修复错误!