一、创建XML

// 建立XML
public static void gernatorXML() {
// 创建Document对象
Document doc = DocumentHelper.createDocument();
// 创建根节点students
Element studentsElement = doc.addElement("students");
// 创建子节点student
Element studentElement1 = studentsElement.addElement("student");
// 添加ID属性
studentElement1.addAttribute("id", "1001");
// 添加子节点
studentElement1.addElement("name").setText("张三");
studentElement1.addElement("age").setText("18");
studentElement1.addElement("sex").setText("男");
studentElement1.addElement("phone").setText("13800138000");
studentElement1.addElement("address").setText("深圳宝安"); // 再创建同样的2个student节点
Element studentElement2 = studentsElement.addElement("student");
// 添加ID属性
studentElement2.addAttribute("id", "10012");
// 添加子节点
studentElement2.addElement("name").setText("李四");
studentElement2.addElement("age").setText("19");
studentElement2.addElement("sex").setText("女");
studentElement2.addElement("phone").setText("13412369854");
studentElement2.addElement("address").setText("上海");
// 再创建同样的2个student节点
Element studentElement3 = studentsElement.addElement("student");
// 添加ID属性
studentElement3.addAttribute("id", "10013");
// 添加子节点
studentElement3.addElement("name").setText("王五");
studentElement3.addElement("age").setText("25");
studentElement3.addElement("sex").setText("女");
studentElement3.addElement("phone").setText("13410110104");
studentElement3.addElement("address").setText("广东"); try {
// 创建XML 将Document写入XML
// 设置格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置字符编码也可以设置为gb2312或者gbk
format.setEncoding("utf-8");
// 输入
XMLWriter writer = new XMLWriter(
new FileWriter("xml/students.xml"), format); // 写入文档
writer.write(doc);
// 关闭流
writer.close();
// 输出提示
System.out.println("======写入成功=======");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

二、解析XML

    // 读取XML
public static void getXML() { try {
// 读取XML
SAXReader reader = new SAXReader();
Document doc = reader.read("xml/students.xml");
// 获取根节点
Element root = doc.getRootElement();
// 获取子节点集合
List<Element> stulList = root.elements();
// 遍历
for (Element ele : stulList) {
// 获取属性
String id = ele.attributeValue("id");
System.out.println("学生ID: " + id);
// 获取子节点的文本内容 name
String name = ele.elementText("name");
// age年龄
String age = ele.elementText("age");
// sex
String sex = ele.elementTextTrim("sex");
// phone
String phone = ele.elementTextTrim("phone");
// address
String address = ele.elementTextTrim("address");
System.out.println("姓名:" + name + "\t年龄: " + age + "\t 性别: "
+ sex + "\t\t电话:" + phone + "\t\t地址: " + address);
} } catch (DocumentException e) {
e.printStackTrace();
} }

三、增加节点

//增加新的节点
public static void addXML(){ try {
//读取XML创建解析器
SAXReader reader=new SAXReader();
//创建Document对象
Document doc=reader.read("xml/students.xml");
//获取根节点
Element root=doc.getRootElement();
//创建新的节点
Element student=root.addElement("student");
//添加属性
student.addAttribute("id", "10020");
//创建子节点
student.addElement("name").setText("张三丰");
student.addElement("age").setText("108");
student.addElement("sex").setText("男");
student.addElement("phone").setText("13800138001");
student.addElement("address").setText("武当山");
//写入XML
//设置字符编码和格式
OutputFormat format=new OutputFormat();
format.setEncoding("utf-8");
//创建输出流
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
//写入Document
writer.write(doc);
//关闭流
writer.close();
//给出提示
System.out.println("======增加成功======="); } catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }

四、修改节点

//修改节点内容根据 id10013将王五的姓名=王小五,年龄30,性别:男,电话:138000138000,地址:北京
public static void modify(){ try {
//创建SAXReader解析器
SAXReader reader=new SAXReader();
//创建Document
Document doc=reader.read("xml/students.xml");
//找到根节点
Element root=doc.getRootElement();
//子节点集合
List<Element> studentList=root.elements();
//遍历查找
for (Element ele : studentList) { if(ele.attributeValue("id").equals("10013")){
ele.element("name").setText("王小五");
ele.element("age").setText("30");
ele.element("sex").setText("男");
ele.element("phone").setText("138000138000");
ele.element("address").setText("北京"); }
}
//写入XML
//设置字符格式和编码
OutputFormat format=new OutputFormat();
format.setEncoding("utf-8");
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
//将Document写入
writer.write(doc);
//关闭流
writer.close();
//给出提示
System.out.println("====修改成功===="); } catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

五、删除节点XML

/删除节点 删除王小五的节点
public static void delete(){ try {
//创建SAXReader 解析器
SAXReader reader=new SAXReader();
//创建Document对象
Document doc=reader.read("xml/students.xml");
//获取根节点
Element root=doc.getRootElement();
//集合
List<Element> stuList=root.elements();
//遍历
for (Element ele : stuList) {
if(ele.attributeValue("id").equals("10013")){
//获取父节点,并删除这个节点
ele.getParent().remove(ele);
}
}
//写入XML
//设置字符编码格式
OutputFormat format =new OutputFormat();
format.setEncoding("utf-8");
//输出流
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
writer.write(doc);
writer.close();
System.out.println("===删除成功==="); } catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

Java从零开始学四十三(DOM4j解析XML)的更多相关文章

  1. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  2. 在java项目中怎样利用Dom4j解析XML文件获取数据

    在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...

  3. Java从零开始学四十二(DOM解析XML)

    一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...

  4. Java从零开始学四十五(Socket编程基础)

    一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  5. Java从零开始学三十三(JAVA IO- File类)

    一.简述 在整个io包中,唯一表示与文件本身有关的类就是File类.使用File类可以进行创建或删除文件等常用操作.要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示: ...

  6. Java从零开始学四十七(注解简述)

    一.Java中注解Annotation 什么是注解:用来描述数据的数据(元数据). Java代码里的特殊标记.它为代码中添加用Java程序无法表达的额外信息提供一种形式化的方法,使用我们可以在未来的某 ...

  7. Java从零开始学四十四(多线程)

    一.进程与线程 1.1.进程 进程是应用程序的执行实例. 进程是程序的一次动态执行过程,它经历了从代码加载.执行到执行完毕的一个完整过程,这个过程也是进程本身从产生.发展到最终消亡的过程 特征: 动态 ...

  8. Java从零开始学四十一(反射简述二)

    一.实例化Class类对象 实例化Class类对象的方法有三种: 第一种:通过forName()方法 第二种:类.class 第三种:对象.getClass() 二.Class类的常用方法 No. 方 ...

  9. Java从零开始学四十(反射简述一)

    一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...

随机推荐

  1. 队列的图文解析 和 对应3种语言的实现(C/C++/Java)

    概要 本章和介绍"栈"时的流程一样,先对队列进行介绍,然后分别给出队列的C.C++和Java三种语言的实现.内容包括:1. 队列的介绍2. 队列的C实现3. 队列的C++实现4.  ...

  2. 编辑器之神VIM 总结(一) 基础部分

     版本号 说明 作者 日期  1.0  vim基础知识 Sky Wang 2013/06/19       概要 vim和emacs,一个是编辑器之神,一个是神一样的编辑器.他们被称是UNIX系统下的 ...

  3. Xcode-显示代码行数

    在Xcode菜单中选择Preferences命令,单击Text Editing选项图标,选中Linenumbers复选框.(快捷键苹果键+逗号打开preferences --> Text Edi ...

  4. Python 的字符串格式化和颜色控制

    (部分内容源自武神博客和网络收集.) Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两 ...

  5. [Solution] 1分钟使用log4net

    log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具 官网:http://logging.a ...

  6. 判断windows操作系统平台

    判断当前Windows系统是win2000,winXP,winVista,win2003,win7... private static IntPtr GetSysTrayWnd() { IntPtr ...

  7. kfreebsd不适用于实际环境

    debian搞的kfreebsd,其中有很多常用的软件包处于依赖破损的状态,个人觉得是无法用作日常开发或生产环境的. 当然,对于只使用其中几项完整可用功能的场景,基本上还是可以的. 当时看个这个东东的 ...

  8. 泛函编程(6)-数据结构-List基础

    List是一种最普通的泛函数据结构,比较直观,有良好的示范基础.List就像一个管子,里面可以装载一长条任何类型的东西.如需要对管子里的东西进行处理,则必须在管子内按直线顺序一个一个的来,这符合泛函编 ...

  9. maven oracle jdbc jar

    1.problem describe: when your dependency jar about oracle use code like this: <!-- oracle-connect ...

  10. LGLProgressHUD

    不想用第三方的指示器,感觉有点大,自己写了一个简单的活动指示器,目前只有两种效果.效果如图 第一种: 第二种 第二种可以随着提示文字的增多而变长 LGLProgressHUD.h // // LGLP ...