虽然我有一段时间以来一直是开发人员,但我很幸运能够避免在XML上做很多工作.所以现在我有一个项目,我必须与一些Web服务进行交互,并希望使用某种Object-to-XML Mapping解决方案.
我唯一知道的就是JAXB.这是最好的吗?还有其他建议吗?
一个问题 - 我使用Java 1.4,因此我无法对注释做任何事情.
JAXB是最佳选择:
Java SE 6中包含的公共API
JAX-WS的绑定层(Web服务)
JAX-RS(Rest)的绑定层
可以保留XML Infoset
多种实现: Metro,MOXy,JaxMe等
EclipseLink JAXB(MOXy)是最好的实现:
MOXy是一个带扩展的JAXB实现
MOXy有一个外部配置文件(基于带扩展名的JAXB注释):
http://bdoughan.blogspot.com/2010/12/extending-jaxb-representing-annotations.html
http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink-OXM.XML
具有基于XPath的映射,用于深度映射:
http://bdoughan.blogspot.com/2010/07/xpath-based-mapping.html
http://bdoughan.blogspot.com/2011/03/map-to-element-based-on-attribute-value.html
http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html
旨在处理ORM映射对象,包括支持双向关系:
http://wiki.eclipse.org/EclipseLink/Examples/MOXy/JPA
http://bdoughan.blogspot.com/2010/07/jpa-entities-to-xml-bidirectional.html
如果您使用WSDL调用Web服务,JAXB绝对是最佳选择.看看wsimport,你就可以在10分钟内完成运行.
我不认为Java 1.4上可以使用JAXB 2.0.您可能需要使用Axis:
java -cp axis-1.4.jar;commons-logging-1.1.jar;commons-discovery-0.2.jar;jaxrpc-1.1.jar;saaj-1.1.jar;wsdl4j-1.4.jar;activation-1.1.jar;mail-1.4.jar org.apache.axis.wsdl.WSDL2Java http://someurl?WSDL
这将生成与JAXB类似的存根.
如果您没有WSDL或XSD,则始终可以生成一个.