现在的位置: 首页 > 综合 > 正文

dom4j对xml文件进行更新操作

2018年04月18日 ⁄ 综合 ⁄ 共 2562字 ⁄ 字号 评论关闭

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它 地址。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包,
Hibernate用它来读写配置文件。

今天项目需要对已存在的xml文件进行更新,对比之下,感觉dom4j还是比较适合的,现在将代码贴上,方便以后参考

/**
	 * 将订单信息写入xml文件
	 * @param map
	 * @throws DocumentException
	 * @throws IOException
	 */
	public void writeXML(Map map) throws DocumentException, IOException{
		
		if(map != null && map.get("respCode").equals("0000")){//订单提交成功,未付款
			//将订单信息写入文件
			File inputXML=new File("e:/orderList.xml");
			//使用 SAXReader 解析 XML 文档 orderList.xml
	        SAXReader saxReader=new SAXReader();
	        Document document=saxReader.read(inputXML);
	        
	        Element orders=document.getRootElement();//根节点
	        
	        Element order = orders.addElement("order");//订单节点
	        
	        Element merchantId = order.addElement("merchantId");//商户ID
	        merchantId.setText(map.get("merchantId").toString());
	        
	        Element transType = order.addElement("transType");//订单状态
	        transType.setText(map.get("transType") == null ? "00":map.get("transType").toString());
	        
	        Element merchantOrderId = order.addElement("merchantOrderId");//订单ID
	        merchantOrderId.setText(map.get("merchantOrderId").toString());
	        
	        Element merchantOrderTime = order.addElement("merchantOrderTime");//订单时间
	        merchantOrderTime.setText(map.get("merchantOrderTime").toString());
	        
	        Element merchantOrderAmt = order.addElement("merchantOrderAmt");//订单金额
	        merchantOrderAmt.setText(map.get("merchantOrderAmt").toString());
			
	        Writer writer = new FileWriter(inputXML);
	        OutputFormat format= OutputFormat.createPrettyPrint();//格式化
			XMLWriter xmlWriter = new XMLWriter(writer,format);
			xmlWriter.write(document);
			xmlWriter.close();
		}
	}

下边这个方法是对之前存入的数据进行读取,代码如下:

/**
	 * 读取订单列表xml文件 放入map,多个返回list
	 * @param fileName
	 * @return
	 * @throws DocumentException
	 */
	private List readXML(String fileName) throws DocumentException{
		List orderList = new ArrayList();
		//读取文件
		File inputXML=new File(fileName);
		//使用SAXReader解析xml
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputXML);
        Element orders = document.getRootElement();
        for(Iterator i = orders.elementIterator();i.hasNext();){
        	Element order = (Element) i.next();
        	
        	Element merchantId = order.element("merchantId");
        	Element transType = order.element("transType");
        	Element merchantOrderId = order.element("merchantOrderId");
        	Element merchantOrderTime = order.element("merchantOrderTime");
        	Element merchantOrderAmt = order.element("merchantOrderAmt");
        	Map map = new HashMap();
        	map.put("merchantId", merchantId.getText());
        	map.put("transType", transType.getText());
        	map.put("merchantOrderId", merchantOrderId.getText());
        	map.put("merchantOrderTime", merchantOrderTime.getText());
        	map.put("merchantOrderAmt", merchantOrderAmt.getText());
        	orderList.add(map);
        }
        return orderList;
	}

抱歉!评论已关闭.