//增删改查文件

package xml2;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.xml.sax.XMLReader;

public class Dom4jReadExmple {
 public File file =new File(System.getProperty("user.dir")+File.separator+"dd"+File.separator+"hy.xml");
 //遍历所有
 public void getSelectedNodeValue(List<Student> list){
  if(!file.exists()){
   System.out.println("文件不存在");
  }
  SAXReader saxReader = new SAXReader();
  try {
   Document document= saxReader.read(file);
   Element rootElement= document.getRootElement();
   Iterator iterator=document.selectNodes("//student").iterator();
   while(iterator.hasNext()){
    Student student = new Student();
    College college = new College();
    Element elem =(Element) iterator.next();
    student.setAge(Integer.parseInt(elem.attributeValue("age")==null?"0":elem.attributeValue("age")));
    student.setName(elem.element("name").getText());
    college.setName(elem.element("college").getText());
    college.setLeader(elem.element("college").attributeValue("leader"));
    student.setCollege(college);
    student.setTelephone(elem.elementText("telephone"));
    student.setNote(elem.elementText("notes"));
    
    System.out.println(student.getName());
    System.out.println(student.getAge());
    System.out.println(student.getTelephone());
    System.out.println(student.getCollege().getName());
    System.out.println(student.getCollege().getLeader());
    System.out.println(student.getNote());
    System.out.println("============================");
    list.add(student);
   }
   
  } catch (DocumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 //插入数据
 public void insertIntoXML(Student stu){
  try {
   if(!file.exists()){
    file.createNewFile();
    PrintWriter writer =new PrintWriter(new FileOutputStream(file));
    writer.write("<?xml version='1.0' encoding='UTF-8'?>");
    writer.write("\n");
    writer.write("<all>");
    writer.write("\n");
    writer.write("</all>");
    writer.flush();
    writer.close();
//    或
//    BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
//    bufferedWriter.write("<?xml version='1.0' encoding='UTF-8'?>");
//    bufferedWriter.write("\n");
//    bufferedWriter.write("<all>");
//    bufferedWriter.write("\n");
//    bufferedWriter.write("</all>");
//    bufferedWriter.flush();
//    bufferedWriter.close();
   }
  Document document= DocumentHelper.createDocument();
  Element root=document.addElement("students");
  root.addComment("所有部门信息");
  Element element =root.addElement("student");
  element.addAttribute("id", stu.getId().toString());
  element.addElement("age").addText(stu.getAge().toString());
  element.addElement("name").addText(stu.getName());
  Element element2 =element.addElement("college");
  element2.addText(stu.getCollege().getName());
  element2.addAttribute("leader", stu.getCollege().getLeader());
  element.addElement("telephone").addText(stu.getTelephone());
  element.addElement("notes").addText(stu.getNote());
  
  SAXReader saxReader = new SAXReader();
  Document document2=saxReader.read(file);
   if(null!=document2){
    List lists=document2.selectNodes("//student");
    if(null!=lists&&lists.size()>0){
     Iterator iterator =lists.iterator();
     while(iterator.hasNext()){
      Element element4 =(Element) iterator.next();
      Element element5 =root.addElement("student");
      element5.addAttribute("id", element4.attributeValue("id"));
      element5.addElement("age").addText(element4.elementText("age"));
      element5.addElement("name").addText(element4.elementText("name"));
      element5.addElement("college").addText(element4.elementText("college")).addAttribute("leader", element4.element("college").attributeValue("leader"));
      element5.addElement("telephone").addText(element4.elementText("telephone"));
      element5.addElement("notes").addText(element4.elementText("notes"));
     }
    }
   }
   XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(file));
   xmlWriter.write(document);
   xmlWriter.close();
  } catch (DocumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
 }
// 通过id删除
 public void deleteFormXml(int id){
  SAXReader saxReader = new SAXReader();
  try {
   Document document=saxReader.read(file);
   Iterator iterator=document.selectNodes("//student[@id]").iterator();
   while(iterator.hasNext()){
    Element element =(Element) iterator.next();
    if(element.attributeValue("id").equals(String.valueOf(id))){
     document.getRootElement().remove(element);
    }
   }
   XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(file));
   xmlWriter.write(document);
   xmlWriter.flush();
   xmlWriter.close();
   
  } catch (DocumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
// 修改对应id数据
 public void editXML(Student stu){
  SAXReader saxReader =new SAXReader();
  try {
   Document document =saxReader.read(file);
   Iterator iterator=document.selectNodes("//student[@id]").iterator();
   while(iterator.hasNext()){
    Element element =(Element) iterator.next();
    if(element.attributeValue("id").equals(String.valueOf(stu.getId()))){
     element.element("name").setText(stu.getName());
     element.element("age").setText(stu.getAge().toString());
     element.element("college").setText(stu.getCollege().getName());
     element.element("college").setAttributeValue("leader", stu.getCollege().getLeader());
     element.element("telephone").setText(stu.getTelephone());
     element.element("notes").setText(stu.getNote());
    }
   }
   XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(file));
   xmlWriter.write(document);
   xmlWriter.flush();
   xmlWriter.close();
  } catch (DocumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
}

XML为数据库进行增删改查(实例)的更多相关文章

  1. java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)

    1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...

  2. python链接oracle数据库以及数据库的增删改查实例

    初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...

  3. Android学习---数据库的增删改查(sqlite CRUD)

    上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...

  4. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  5. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  6. Android中Sqlite数据库进行增删改查

    今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...

  7. Java操作数据库实现"增删改查"

    本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一   DriverManager类 DriverManage类 ...

  8. [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?

    [译]聊聊C#中的泛型的使用(新手勿入)   写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...

  9. 用SpringBoot+MySql+JPA实现对数据库的增删改查和分页

    使用SpringBoot+Mysql+JPA实现对数据库的增删改查和分页      JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述 ...

随机推荐

  1. Struts2中的get、set方法作用:

    Struts2中的get.set方法作用: 在Struts2中,客户端和服务器之间的数据传输全部要用到get.set方法:用set方法 ,可以将表单中的值存入Action类.通过Struts2.0标签 ...

  2. DoctrineMigrationsBundle

    数据库迁移特征是数据库抽象层的扩展,允许你用编程的方式,安全.方便.标准化实现数据库结构的更新. 安装 首先使用composer安装 $ composer require doctrine/doctr ...

  3. Android再学习-20140928-布局

    关于布局中的单位 PX是像素,这个没有问题.另外还有两个单位,一个是dp,这个是个相对单位,在任何分辨率的屏幕上显示效果是一样的,所以用dp来进行控件的大小设置.另外,字体的设置推荐用sp,这样字体可 ...

  4. 怎么在网页中加入ICO图标

    1.首先制作一个16x16的icon图标,命名为cssbbs.ico(这里的名字可以随便改!),放在根目录下.2.然后将下面的代码嵌入head区:<link rel="icon&quo ...

  5. cocos2dx ——屏幕适配

    本文出自 “夏天的风” 博客,请务必保留此出处 http://shahdza.blog.51cto.com/2410787/1550089 手机的屏幕大小千差万别,如现在流行的安卓手机屏幕大部分长宽比 ...

  6. 异步编程设计模式 - IronPythonDebugger

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsof ...

  7. 使用filter统一设置编码

    1.写一个类EncodingFilter.java,实现javax.servlet.Filter(文件命名做到见名知意) package com.filter; import java.io.IOEx ...

  8. 利用sql命令把结果集输出到文件

    利用sql命令把结果集输出到文件 红色部分的三条命令完成把结果集输出到文件!! [root@test root]# psql -hlocalhost -Utest testWelcome to psq ...

  9. HDU 3507 PrintArticle (单调队列优化)

    题意:给出一个数列C,一个数字M,将数列分成若干段,每段的代价为(设这段的数字为k个): dp[i]=min(dp[j]+(sum[i]-sum[j])*(sum[i]-sum[j])+M) 若j1& ...

  10. Qt自定义带游标的slider,在滑块正上方显示当前值(非常有意思,继承QSlider之后增加一个QLabel,然后不断移动它)

    首先自定义QSlider的子类MyCustomSlider,如下所示. mycustomslider.h #ifndef MYCUSTOMSLIDER_H #define MYCUSTOMSLIDER ...