我正在寻找一个 Java 库,它允许我将 XML 编组到 Java 对象树,反之亦然。有很多库可以让我将 XML 绑定到JavaBeans由某些代码生成工具生成,但是,我不需要这些(JAXB、JiBX、Castor 等)。
我需要的是一个工具,它可以使用模式文件和 xml 文件,然后返回以下内容的组合:Map
s, List
s and Object
s 以类似于Jackson 的简单数据绑定 http://wiki.fasterxml.com/JacksonDataBinding(当然是在可能的情况下)。 Jackson 适用于 JSON,而不是 XML;并且它缺乏考虑模式文件的能力(因为 JSON Schema 目前还太不成熟)。
我可以调整一些现有的工具来解决我的问题,还是应该使用 DOM 和 XSOM 推出自己的解决方案?
MOXy 的动态 JAXB
MOXy 提供动态 JAXB 实现。您可以从 XML 模式引导,而不是静态类,您可以使用通用的 get/set 方法与 DynamicEntity 的实例进行交互:
FileInputStream xsd = new FileInputStream("src/example/customer.xsd");
DynamicJAXBContext jaxbContext =
DynamicJAXBContextFactory.createContextFromXSD(xsd, null, null, null);
FileInputStream xmlInputStream = new FileInputStream("src/example/dynamic/customer.xml");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
DynamicEntity customer = (DynamicEntity) unmarshaller.unmarshal(xmlInputStream);
System.out.println(customer.<String>get("name"));
欲了解更多信息,请参阅:
- http://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic http://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
服务数据对象 (SDO)
您还可以为此使用服务数据对象 (JSR-235)。
FileReader xsd = new FileReader("customer.xsd");
XSDHelper.INSTANCE.define(xsd, null);
FileReader xml = new FileReader("input.xml");
XMLDocument doc = XMLHelper.INSTANCE.load(xml, null, null);
DataObject customerDO = doc.getRootObject();
int id = customerDO.getInt("id");
DataObject addressDO = customerDO.getDataObject("contact-info/address");
欲了解更多信息,请参阅:
- http://wiki.eclipse.org/EclipseLink/Examples/SDO http://wiki.eclipse.org/EclipseLink/Examples/SDO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)