利用JAXBContext将xml文件转换成List<T>

我们在将xml文件封装成List<T>形式的文件时,通常使用dom4j或者其他的一些遍历xml的技术,一般都是
doc = DocumentHelper.parseText(xml); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
//System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
Iterator iter = rootElt.elementIterator("CustBean"); // 获取根节点下的子节点head
System.out.println(iter);
List<book> list = new ArrayList<book>();

while (iter.hasNext()) {
Element itemEle = (Element) iter.next();
~~~
Book book = new Book();
book.setName(itemEle.elementTextTrim("name"));
list.add(book);
}

今天从网上学习了另外一种方法,使用JAXBContext将xml文件直接转换成List<T>

1、定义类
@XmlRootElement(name = "Book")
public class Book implements Serializable {
private String bookid;
private String name;

//默认构造方法必须有
public Book() {
super();
}
省略getter、setter方法
}

2、新建List<T>类
@XmlRootElement(name = "Books")
public class ListBook {

private List<Book> list;
public ListBook() {
super();
}

@XmlElements(value={@XmlElement(name="Book", type=Book.class)})
public List<Book> getList() {
return list;
}
public void setList(List<Book> list) {
this.list = list;
}

}
3、建立测试类
package com.util;


import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import com.util.ListBook;

public class Test {
public static void XMLToBean(String strxml) {
try {
JAXBContext context = JAXBContext.newInstance(ListBook.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
ListBook listbooks = (ListBook) unmarshaller.unmarshal(new StringReader(strxml));
for (Book book : listbooks.getList()) {
System.out.println("bookid==="+book.getBookid()+"########bookname==="+book.getName());
}
} catch (JAXBException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String strxml = "<?xml version='1.0' encoding='UTF-8'?><Books><Book><bookid>1</bookid><name>知音</name>" +
"</Book><Book><bookid>2</bookid><name>故事会</name></Book></Books>";
XMLToBean(strxml);
}
}

猜你喜欢

转载自zhangshufei8001.iteye.com/blog/2377270
今日推荐