环境
在项目里创建lib包,把Dom4J.jar放入包里,add Library添加解析包
编写
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * Dom4j解析 * @author Administrator * */ public class Dom4j { private Document document; /** * 获取Document对象 */ public void loadDocument() { SAXReader saxReader = new SAXReader(); try { document = saxReader.read(new File("收藏信息.xml")); } catch (DocumentException e) { e.printStackTrace(); } } /** * 保存修改的XML */ public void saveXML(String path) { OutputFormat format = OutputFormat.createPrettyPrint();//输出格式 format.setEncoding("UTF-8"); //编码格式 XMLWriter writer = null; try { writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(path),"UTF-8"),format); writer.write(document); } catch (UnsupportedEncodingException | FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 显示手机品牌和型号 */ public void showPhoneInfo() { //获取XML根节点 Element root = document.getRootElement(); //获取所有的<Brand>迭代器 Iterator eleBrands = root.elementIterator(); while(eleBrands.hasNext()) { Element brand = (Element)eleBrands.next(); System.out.println(brand.attributeValue("name")); Iterator eleType = brand.elementIterator(); while(eleType.hasNext()) { Element type = (Element)eleType.next(); System.out.println("\t"+type.attributeValue("name")); } } } /** * 增加新的手机品牌及型号信息 */ public void addNewPhone() { //获得XML根元素 Element root = document.getRootElement(); //创建<brand name="HTC"> Element eleBrand = root.addElement("Brand"); eleBrand.addAttribute("name","HTC"); //创建<brand name="HTC"> Element eleType =eleBrand.addElement("Type"); eleType.addAttribute("name","htc200"); } /** * 修改手机添加id */ public void updatePhone() { Element root = document.getRootElement(); Iterator eleBrands = root.elementIterator(); int id = 0; while(eleBrands.hasNext()) { Element brand = (Element)eleBrands.next(); id++; brand.addAttribute("id", id+""); } saveXML("新收藏信息.xml"); } /** * 删除节点 */ public void deletePhone() { Element root = document.getRootElement(); Iterator eleBrands = root.elementIterator(); while(eleBrands.hasNext()) { Element brand = (Element)eleBrands.next(); if(brand.attributeValue("name").equals("")) { brand.getParent().remove(brand); //删除 } } } /** * main方法 * @param args */ public static void main(String[] args) { Dom4j d= new Dom4j(); d.loadDocument(); //获取XML d.addNewPhone(); //添加手机 d.updatePhone(); //给手机添加id d.showPhoneInfo(); //展示信息 d.deletePhone(); //删除手机 d.saveXML("新收藏信息.xml"); //保存XML } }
运行前
运行后