import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;


public class BookUtis {
	
	public List<Book> xmlToBook(InputStream is) throws Exception{
		//封装了对xml的解析
		SAXReader read=new SAXReader();
		//做文件,解析器读取数据InputStream。从网络端收取数据或者从文件中读取数据
		Document doc=read.read(is);
		//根元素
		Element root=doc.getRootElement();
		List<Book> booklist=new ArrayList<Book>();
		
		
		 List<Element> bookElements=root.elements("book");//这个文件万一下面有多个子元素的话,只拿其中book
		 for(Element e:bookElements){
			Book book=new Book();
			//明确book下只有name单个元素
			//                 book元素下获取name返回Element类型的list,只有一个元素取get(0)获取第一行,整体扩起来是一个单个元素,获取文本,tostring
			
			String name=((Element)(e.elements("name").get(0))).getData().toString();
			
			double price=Double.parseDouble(((Element)(e.elements("price").get(0))).getData().toString());
			
			book.setName(name);
			book.setPrice(price);
			booklist.add(book);
		 }
		
		return booklist;
	}
	
	public List<Book> xmlToBook(String xmlFileName) throws Exception{
		InputStream is=new FileInputStream(xmlFileName);
		List<Book> list=xmlToBook(is);
		
		
		
		
		return list;
	}

	public void bookToXML(List<Book> booklist,OutputStream os) throws Exception{
		
		Document doc=DocumentHelper.createDocument();
		Element root=doc.addElement("books");
		for(Book book:booklist){
			Element bookElement=root.addElement("book");
			bookElement.addElement("name").setText(book.getName());
			bookElement.addElement("price").setText(String.valueOf(book.getPrice()));
			
		}
		
		
		XMLWriter write=new XMLWriter(os,OutputFormat.createCompactFormat());
		
		write.write(doc);
		
		write.close();
	}
}

  

posted on 2018-02-08 11:17  我想长点脑子  阅读(125)  评论(0编辑  收藏  举报