dom4j操作XML文件

这里有个XML文件如下图所示,看下dom4j如何创建、解析、修改操作它。



package dom4j;

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
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 XMLUtil {
	
	/**
	 * 创建XML文件
	 * @param filePath	文件完整路径(带文件名)
	 */
	public static void createXML(String filePath) {
		// 创建一个完整的document,包含根节点与子节点
		Document document = DocumentHelper.createDocument();
		Element root = document.addElement("root");
		root.addElement("totalRecords").addText("999");
		root.addElement("pagesize").addText("4");
		root.addElement("currpage").addText("1");
		Element hotelList = root.addElement("hotelList");
		hotelList.addElement("hotel").addAttribute("hotelName", "七天连锁酒店").addAttribute("address", "长安街001号");
		hotelList.addElement("hotel").addAttribute("hotelName", "如家连锁酒店").addAttribute("address", "长安街002号");
		hotelList.addElement("hotel").addAttribute("hotelName", "汉庭连锁酒店").addAttribute("address", "长安街003号");
		hotelList.addElement("hotel").addAttribute("hotelName", "希尔顿连锁酒店").addAttribute("address", "长安街004号");
		
		// 将document输出到文件
		try {
			XMLWriter writer = null;
			OutputFormat format = OutputFormat.createPrettyPrint();		// 美化输出格式
			format.setEncoding("UTF-8");
			writer= new XMLWriter(new FileWriter(new File(filePath)),format);
			writer.write(document);
			writer.close();
		} catch(Exception ex) {
			ex.printStackTrace();
		}
	}
	
	/**
	 * 创建XML文件
	 * @param content	写入的内容
	 * @param filePath	文件完整路径(带文件名)
	 */
	public static void createXML(String content, String filePath) {
		try {
			// 将字符串转化成document
			Document document = DocumentHelper.parseText(content);
			// 将document输出到文件
			XMLWriter writer = null;
			OutputFormat format = OutputFormat.createPrettyPrint();		// 美化输出格式
			format.setEncoding("UTF-8");
			writer= new XMLWriter(new FileWriter(new File(filePath)),format);
			writer.write(document);
			writer.close();
		} catch(Exception ex) {
			ex.printStackTrace();
		}
	}
	
	/**
	 * 将XML文件转化成字符串
	 * @param filePath 文件完整路径(带文件名)
	 * @return
	 */
	public static String xmlToString(String filePath) {
		String content = "";
		try {
			SAXReader saxReader = new SAXReader();
			Document document = saxReader.read(new File(filePath));
			content = document.asXML();
		} catch(Exception ex) {
			ex.printStackTrace();
		}
		return content;
	}
	
	/**
	 * 解析XML文件
	 * @param filePath 文件完整路径(带文件名)
	 * @return
	 */
	public static void praseXML(String filePath) {
		int totalRecords = 0;	// 酒店总数
		int pagesize = 0;		// 每页返回最大结果数
		int currpage = 0;		// 当前页数
		List<Map<String, Object>> hotelMapList = new ArrayList<Map<String, Object>>();
		Map<String, Object> map = null;
		try {
			SAXReader saxReader = new SAXReader();
			Document document = saxReader.read(new File(filePath));
			Element root = document.getRootElement();
			totalRecords = Integer.parseInt(root.element("totalRecords").getText());
			pagesize = Integer.parseInt(root.element("pagesize").getText());
			currpage = Integer.parseInt(root.element("currpage").getText());
			Element hotelListElement = root.element("hotelList");
			Iterator it = hotelListElement.elementIterator("hotel");
			String hotelName = "";
			String address = "";
			while(it.hasNext()) {
				Element types = (Element) it.next();
				hotelName = types.attributeValue("hotelName");
				address = types.attributeValue("address");
				map = new HashMap<String, Object>();
				map.put("hotelName", hotelName);
				map.put("address", address);
				hotelMapList.add(map);
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 修改XML文件,将每次返回4个酒店改为每次返回5个酒店
	 * @param filePath 文件完整路径(带文件名)
	 */
	public static void modifyXML(String filePath) {
		try {
			SAXReader saxReader = new SAXReader();
			Document document = saxReader.read(new File(filePath));
			Element root = document.getRootElement();
			root.element("pagesize").setText("5");
			Element hotelListElement = root.element("hotelList");
			hotelListElement.addElement("hotel").addAttribute("hotelName", "维多利亚连锁酒店").addAttribute("address", "长安街005号");
			
			// 将修改后的document输出到文件
			XMLWriter writer = null;
			OutputFormat format = OutputFormat.createPrettyPrint();		// 美化输出格式
			format.setEncoding("UTF-8");
			writer= new XMLWriter(new FileWriter(new File(filePath)),format);
			writer.write(document);
			writer.close();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值