zoukankan      html  css  js  c++  java
  • 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html

      1 xml文件:
      2 <?xml version="1.0" encoding="GBK"?>
      3 
      4 <phoneinfo> 
      5   <brand name="小米" id="1"> 
      6     <type name="MI5"/>  
      7     <type name="NOTE"/>  
      8     <type name="MI5S"/> 
      9   </brand>  
     10   <brand name="华为" id="2"> 
     11     <type name="荣耀8"/>  
     12     <type name="荣耀8plus"/> 
     13   </brand>  
     14   <brand name="苹果" id="3">
     15     <type name="iphone7"/>
     16     <type1 name="iphone6"/>
     17   </brand>
     18 </phoneinfo>
     19 
     20 
     21 用dom4j解析xml文件
     22 package com.hfxt;
     23 
     24 import java.io.File;
     25 import java.io.FileNotFoundException;
     26 import java.io.FileOutputStream;
     27 import java.io.IOException;
     28 import java.io.OutputStreamWriter;
     29 import java.util.Iterator;
     30 import org.dom4j.Document;
     31 import org.dom4j.DocumentException;
     32 import org.dom4j.Element;
     33 import org.dom4j.io.OutputFormat;
     34 import org.dom4j.io.SAXReader;
     35 import org.dom4j.io.XMLWriter;
     36 
     37 //dom4j解析xml并且执行(增、删、改、查)操作
     38 public class dom4jXmlDemo {
     39 
     40     private Document document;
     41     
     42     public static void main(String[] args){
     43         dom4jXmlDemo domXml = new dom4jXmlDemo();
     44         domXml.getDom();
     45         domXml.addPhoneInfo();
     46         domXml.updatePhoneInfo();
     47         //domXml.deletePhoneInfo();
     48         domXml.showPhoneInfo();
     49 
     50     }
     51     
     52     //获取DOM树
     53     public void getDom(){
     54         SAXReader reader = new SAXReader();
     55         try {
     56             document = reader.read(new File("phoneinfo.xml"));
     57         } catch (DocumentException e) {
     58             e.printStackTrace();
     59         }
     60     }
     61     
     62     //增加手机信息
     63     public void addPhoneInfo(){
     64         //获取根节点元素
     65         Element element = document.getRootElement();
     66         //添加brand节点
     67         Element brand = element.addElement("brand");
     68         //为brand添加属性并且赋值
     69         brand.addAttribute("name","苹果");
     70         //添加type节点
     71         Element type = brand.addElement("type");
     72         Element type1 = brand.addElement("type1");
     73         //为type节点添加name属性并且赋值
     74         type.addAttribute("name","iphone7");
     75         type1.addAttribute("name","iphone6");
     76         saveXml("phoneinfo.xml");
     77     }
     78     
     79     //删除手机信息
     80     public void deletePhoneInfo(){
     81         //获取根节点
     82         Element element = document.getRootElement();
     83         Iterator brand = element.elementIterator();
     84         //遍历获取每个节点信息
     85         while(brand.hasNext()){
     86             Element eleBrand = (Element)brand.next();
     87             //删除name为苹果的brand
     88             if(eleBrand.attributeValue("name").equals("苹果")){
     89                 eleBrand.getParent().remove(eleBrand);
     90             }
     91         }
     92         //保存信息
     93         saveXml("phoneinfo.xml");
     94     }
     95 
     96     //修改手机信息
     97     public void updatePhoneInfo(){
     98         //获取手机信息
     99         Element element = document.getRootElement();
    100         Iterator brand = element.elementIterator();
    101         int id = 0;
    102         while(brand.hasNext()){
    103             Element eleBrand = (Element)brand.next();
    104             id++;
    105             eleBrand.addAttribute("id",id+"");
    106         }
    107         saveXml("phoneinfo.xml");
    108     }
    109     
    110     //显示手机信息
    111     public void showPhoneInfo(){
    112         //获取根节点
    113         Element element = document.getRootElement();
    114         Iterator brand = element.elementIterator();
    115         while(brand.hasNext()){
    116             Element eleBrand = (Element)brand.next();
    117             //根据name属性获取对应的值的名字
    118             System.out.println(eleBrand.attributeValue("name"));
    119             //获取type节点
    120             Iterator type = eleBrand.elementIterator();
    121             //遍历所有type节点
    122             while(type.hasNext()){
    123                 Element eleType = (Element)type.next();
    124                 System.out.println("	"+eleType.attributeValue("name"));
    125             }
    126         }
    127     }
    128 
    129     //保存信息到xml
    130     public void saveXml(String path){
    131         //格式化
    132         OutputFormat format = OutputFormat.createPrettyPrint();
    133         //指定字符编码格式
    134         format.setEncoding("GBK");
    135         XMLWriter writer = null;
    136         //将文件按照指定格式输出到指定路径中
    137         try {
    138             writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(path)),format);
    139             writer.write(document);
    140         } catch (FileNotFoundException e) {
    141             e.printStackTrace();
    142         } catch (IOException e) {
    143             e.printStackTrace();
    144         }finally{
    145             try {
    146                 //关闭服务
    147                 writer.close();
    148             } catch (IOException e) {
    149                 e.printStackTrace();
    150             }
    151         }
    152     }
    153 
    154 }
    • 用dom4j解析xml文件并执行增删改查操作
    •  
  • 相关阅读:
    最大流之dinic
    HDU 2485
    最小费用最大流
    HDU 1533
    HDU 1402
    HDU 1498
    HDU 1281
    Codeforces 283E Cow Tennis Tournament 线段树 (看题解)
    Codeforces 983E NN country 思维 (看题解)
    Codeforces 494D Birthday 树形dp (看题解)
  • 原文地址:https://www.cnblogs.com/sharpest/p/7722444.html
Copyright © 2011-2022 走看看