您的位置:首页 > 其它

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

2016-07-30 10:51 871 查看
我们在将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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAXBContext xml List