xml解析系列(二)——用Marshaller和Unmarshaller解析xml

来源:互联网 发布:文玩淘宝店 编辑:程序博客网 时间:2024/06/08 19:32

常用标签

这是jdk1.6中自带的xml解析器,它可以通过配置的方式,将java对象和xml的节点映射起来,形成java对象和xml的方便的转换。

常用注解

@XmlRootElement  作用于类,表示该类与xml的主节点映射,

常用参数

name : 主节点标签名,默认与类名首字母小写一致。

@XmlElement 作用于属性的getset方法,表示该属性与节点对应,属性可以是List,也可以是普通Object。

常用参数

name : 映射的节点标签名

@XmlElement(name = "channel")public List<Channel> getChannel() {    return channel;}

@XmlAccessorType 作用于类,将类属性和对于xml节点自动映射,和@XmlElement一起使用会发生冲突

XmlElementWrapper 还是类的两个属性具有相同名称 "XXX"

@XmlAttribute  作用于属性的get|set方法,表示类属性与xml该节点的属性对应

常用参数

name : 属性名

@XmlElementWrapper  作用于属性或其get|set方法,使javabean转xml会自动加上一个包装的标签,

<BODY>   <ANQI>00001</ANQI>   <ANQI>00002</ANQI>   <ANQI>00003</ANQI></BODY>

@XmlElementWrapper(name=”BODY”)@XmlElement(name = "ANQI")public String getAnqi(){   return anqi;}

@XmlValue 标签的text

XML和javabean相互转换

public static <T> T xmlToBean(String xml, T t) throws JAXBException{    JAXBContext context = JAXBContext.newInstance(t.getClass());    Unmarshaller um =context.createUnmarshaller();    StringReader sr = new StringReader(xml);    t = (T)um.unmarshal(sr);    return t;}

public static String objectToXML(Class clazz, Objectobject)        throws JAXBException{    String xml = null;    JAXBContext context = JAXBContext.newInstance(clazz);    Marshaller m =context.createMarshaller();    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);    Writer w = new StringWriter();    m.marshal(object, w);    xml = w.toString();    return xml;}