用dom4j解析xml文件并执行增删改查操作

来源:互联网 发布:淘宝和京东 编辑:程序博客网 时间:2024/06/05 00:53
xml文件:<?xml version="1.0" encoding="GBK"?><phoneinfo>   <brand name="小米" id="1">     <type name="MI5"/>      <type name="NOTE"/>      <type name="MI5S"/>   </brand>    <brand name="华为" id="2">     <type name="荣耀8"/>      <type name="荣耀8plus"/>   </brand>    <brand name="苹果" id="3">    <type name="iphone7"/>    <type1 name="iphone6"/>  </brand></phoneinfo>用dom4j解析xml文件package com.hfxt;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;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解析xml并且执行(增、删、改、查)操作public class dom4jXmlDemo {private Document document;public static void main(String[] args){dom4jXmlDemo domXml = new dom4jXmlDemo();domXml.getDom();domXml.addPhoneInfo();domXml.updatePhoneInfo();//domXml.deletePhoneInfo();domXml.showPhoneInfo();}//获取DOM树public void getDom(){SAXReader reader = new SAXReader();try {document = reader.read(new File("phoneinfo.xml"));} catch (DocumentException e) {e.printStackTrace();}}//增加手机信息public void addPhoneInfo(){//获取根节点元素Element element = document.getRootElement();//添加brand节点Element brand = element.addElement("brand");//为brand添加属性并且赋值brand.addAttribute("name","苹果");//添加type节点Element type = brand.addElement("type");Element type1 = brand.addElement("type1");//为type节点添加name属性并且赋值type.addAttribute("name","iphone7");type1.addAttribute("name","iphone6");saveXml("phoneinfo.xml");}//删除手机信息public void deletePhoneInfo(){//获取根节点Element element = document.getRootElement();Iterator brand = element.elementIterator();//遍历获取每个节点信息while(brand.hasNext()){Element eleBrand = (Element)brand.next();//删除name为苹果的brandif(eleBrand.attributeValue("name").equals("苹果")){eleBrand.getParent().remove(eleBrand);}}//保存信息saveXml("phoneinfo.xml");}//修改手机信息public void updatePhoneInfo(){//获取手机信息Element element = document.getRootElement();Iterator brand = element.elementIterator();int id = 0;while(brand.hasNext()){Element eleBrand = (Element)brand.next();id++;eleBrand.addAttribute("id",id+"");}saveXml("phoneinfo.xml");}//显示手机信息public void showPhoneInfo(){//获取根节点Element element = document.getRootElement();Iterator brand = element.elementIterator();while(brand.hasNext()){Element eleBrand = (Element)brand.next();//根据name属性获取对应的值的名字System.out.println(eleBrand.attributeValue("name"));//获取type节点Iterator type = eleBrand.elementIterator();//遍历所有type节点while(type.hasNext()){Element eleType = (Element)type.next();System.out.println("\t"+eleType.attributeValue("name"));}}}//保存信息到xmlpublic void saveXml(String path){//格式化OutputFormat format = OutputFormat.createPrettyPrint();//指定字符编码格式format.setEncoding("GBK");XMLWriter writer = null;//将文件按照指定格式输出到指定路径中try {writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(path)),format);writer.write(document);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {//关闭服务writer.close();} catch (IOException e) {e.printStackTrace();}}}}

0 0