dom4j对xml进行读写操作

利用dom4j 对xml进行读写操作


下面是我项目中Action中的两个方法:

要导包:dom4j-1.6-1.jar

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

	//写xml
	private void writeXmlNewProduct(){
		List<Object[]> list=ps.topFiveNewProduct();
		String xmlPath = ServletActionContext.getServletContext().getRealPath("/pages/xml");
		Document doc = DocumentHelper.createDocument(); //创建一个Document
		Element root = doc.addElement("products");//添加根节点
		for (int i = 0; i <list.size(); i++) {
		Element product = root.addElement("product").addAttribute("pid", list.get(i)[1].toString());
		Element pname = product.addElement("pname");
		Element price1 = product.addElement("beforePrice");
		Element price2 = product.addElement("nowPrice");
		Element pic = product.addElement("pic");
		pname.setText(list.get(i)[3].toString());
		price1.setText(list.get(i)[10].toString());
		price2.setText(list.get(i)[9].toString());
		pic.setText(list.get(i)[6].toString());
		}
		try{
			OutputFormat format = new OutputFormat("", true); //格式
			format.setEncoding("UTF-8");
			XMLWriter xmlWriter = new XMLWriter(new PrintWriter(xmlPath+"/newProduct.xml"), format);
			xmlWriter.write(doc);  //写入xml文件中
			xmlWriter.close();
		}catch(IOException e){
			e.printStackTrace();
		}
	}
	
	//读取xml
	private void readXmlNewProduct() throws Exception{
		SAXReader saxReader = new SAXReader();  //准备一个SAXReader读取器
		String xmlPath = ServletActionContext.getServletContext().getRealPath("/pages/xml/newProduct.xml");
		Document doc = null;
		List<Map> listmap=new ArrayList<Map>();
		try {
			try {
				FileInputStream in = new FileInputStream(new File(xmlPath));  
				Reader read = new InputStreamReader(in,"gbk");  //防止中午读取后乱码,所以转gbk格式
				doc = saxReader.read(read); //读取文档
			} catch (FileNotFoundException e) {
				System.out.println(e);
				e.printStackTrace();
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		} catch (DocumentException e) {
			System.out.println(e);
			e.printStackTrace();
		}
		Element books = doc.getRootElement(); //获得文档的根节点
		Iterator it = books.elementIterator();//对根节点进行迭代节点元素
		while(it.hasNext()){
			HashMap<String,Object> map=new HashMap<String,Object>();
			Element product = (Element)it.next();
			Element name = product.element("pname");
			Element price1 = product.element("beforePrice");
			Element price2 = product.element("nowPrice");
			Element pic = product.element("pic");
			map.put("pid", product.attribute("pid").getText());
		    map.put("pname", name.getText());
		    map.put("price1", price1.getText());
		    map.put("price2", price2.getText());
		    map.put("pic", pic.getText());
		    listmap.add(map);
		}
		Util.toJson(listmap);
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值