记录一下工作中遇到的问题:
webservice请求返回的不是对象而是XML,调研了一下,这种算是比较前沿的技术,非常简单,将XML文件中的每层标签做成模型对象dojo,切记必须序列化,然后加入相应的注解完成转换。
JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换。在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版本JAX-WS2.1,其底层支持就是JAXB。
JAXB 可以实现Java对象与XML的相互转换,在JAXB中,将一个Java对象转换为XML的过程称之为Marshal,将XML转换为Java对象的过程称之为UnMarshal。
模型对象如下:
@XmlRootElement(name="baseInfo")
@XmlAccessorType(XmlAccessType.FIELD)
public class BaseInfo implements Serializable{
private static final long serialVersionUID = 1L;
@XmlElement(name="fiversioneld")
private String version;
...
}
具体转换步骤如下:
JAXBContext context = JAXBContext.newInstance(new Class[] { BaseInfo.class });
Unmarshaller unmarshaller = context.createUnmarshaller();
InputStream is = new ByteArrayInputStream(a.getBytes("UTF-8"));
BaseInfo baseInfo= ((BaseInfo) unmarshaller.unmarshal(is));
System.out.println(JSON.toJSONString(baseInfo));