xml转javaBean
xml文件是一层层关系,假如你要获取xml某层节点里数据,需要一层层转换(赋值)到javaBean,直到赋到你需要数据层。一般应用于webservice数据交互,需要将xml转换成javaBean对象
Xml文件案例
<cisReports>
<cisReport>
<queryConditions>
<item>
<name>高某人</name>
<age>23岁</age>
<address>朝阳</address>
</item>
</queryConditions>
</cisReport>
</cisReports>
Xml转javaBean工具类
@SuppressWarnings("unchecked")
public static Object convertXmlStrToObject(Class clazz, String xmlStr) {
Object xmlObject = null;
try {
JAXBContext context = JAXBContext.newInstance(clazz);
// 进行将Xml转成对象的核心接口
Unmarshaller unmarshaller = context.createUnmarshaller();
StringReader sr = new StringReader(xmlStr);
xmlObject = unmarshaller.unmarshal(sr);
} catch (JAXBException e) {
e.printStackTrace();
}
return xmlObject;
}
根据xml和要获取的信息创建javabean对象
@XmlRootElement(name = "cisReports")
@XmlAccessorType(XmlAccessType.FIELD)
public class CisReports {
@XmlElement(name = "cisReport")
private CisReport cisReport;
public CisReport getCisReport() {
return cisReport;
}
public void setCisReport(CisReport cisReport) {
this.cisReport = cisReport;
}
@XmlAccessorType(XmlAccessType.FIELD)
public class CisReport {
@XmlElement(name = "queryConditions")
private QueryConditions queryConditions;
public QueryConditions getQueryConditions() {
return queryConditions;
}
public void setQueryConditions(QueryConditions queryConditions) {
this.queryConditions = queryConditions;
}
@XmlAccessorType(XmlAccessType.FIELD)
public class QueryConditions {
@XmlElement(name = "item")
private Item item;
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Item {
@XmlElement(name = "name")
private String name;
@XmlElement(name = "age")
private String age;
@XmlElement(name = "address")
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
注解说明
@XmlRootElement:将类或枚举类型映射到 XML 元素。
@XmlElement:将JavaBean 属性映射到派生于属性名称的 XML 元素。
@XmlAccessorType(XmlAccessType.FIELD)只有属性才能被转换成 xml 中的标签
利用提供的工具类查看javabean里获取到的xml信息
//CisReports.class是你要转换第一层javaBean、resuXml是xml字符串
Object object=xmlToBean.convertXmlStrToObject(CisReports.class,resuXml);
CisReports cisReports = new CisReports();
cisReports = (CisReports) object;
System.out.println(cisReports.getCisReport().getQueryConditions().getItem().getName()
+cisReports.getCisReport().getQueryConditions().getItem().getAge()
+cisReports.getCisReport().getQueryConditions().getItem().getAddress());