常用标签
这是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;
}