利用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);
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值