Xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<student>
<!--first xml-->
<call show="no">
<name>studentname</name>
<English>78</English>
<Chinese>78</Chinese>
<Japan>98</Japan>
</call>
<call show="no">
<name>studentname</name>
<English>77</English>
<Chinese>68</Chinese>
<Japan>88</Japan>
</call>
</student>
JAVA文件:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
* DOM4j对xml文件的操作
* 操作DOM4j的时候注意要导入3个jar包,否则会报异常
* dom4j-1.6.1.jar
* jaxen-1.1-beta-6.jar
* saxpath.jar
* */
public class ReaderDom4j {
/**
* 创建一个xml文件
**/
public static void createxml() {
//使用 DocumentHelper 类创建一个文档实例。DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类。
Document document = DocumentHelper.createDocument();
//使用 addElement() 方法创建根元素 student
Element booksElement = document.addElement("student");
booksElement.addComment("first xml");
//在 student 元素中使用 addElement() 方法增加 call 元素。
Element book1Elment = booksElement.addElement("call");
//在call元素里增加show属性,show属性的值是yes
book1Elment.addAttribute("show", "yes");
//在 call 元素中使用 addElement() 方法增加 name 元素。
Element book2Element = book1Elment.addElement("name");
//设置name标签的内容
book2Element.setText("zhangsan");
Element book3Element = book1Elment.addElement("English");
book3Element.setText("78");
Element book4Element = book1Elment.addElement("Chinese");
book4Element.setText("78");
Element book5Element = book1Elment.addElement("Japan");
book5Element.setText("98");
book1Elment = booksElement.addElement("call");
book1Elment.addAttribute("show", "yes");
book2Element = book1Elment.addElement("name");
book2Element.setText("wangwu");
book3Element = book1Elment.addElement("English");
book3Element.setText("77");
book4Element = book1Elment.addElement("Chinese");
book4Element.setText("68");
book5Element = book1Elment.addElement("Japan");
book5Element.setText("88");
try {
//格式化输出xml文件,兼容ie的格式化输出
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
//把xml文件从内存中写入文件
XMLWriter writer = new XMLWriter(new FileWriter("myxml.xml"),
format);
writer.write(document);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
/**
* 对xml文件的修改操作
* 修改xml文件以后要重新把xml文件从内存中写入文件,否则修改的只是内存中的xml,实际文件不会改变
* DOM4j操作xml文件是一次性把所有数据读入内存中,所以xml文件过大不能用dom4j去解析
* */
public static void modifyxml(){
//使用SAXReader去解析xml文件
SAXReader reader=new SAXReader();
Document document;
try {
File file = new File("C:\\workspace\\Test\\myxml.xml");
//获取document对象
document=reader.read(file);
//通过selectNodes寻找节点或者属性
List list=document.selectNodes("/student/call/@show");
Iterator it=list.iterator();
while(it.hasNext()){
//Attribute属性的操作方法
Attribute attribute=(Attribute)it.next();
if(attribute.getValue().equals("yes"))
{
attribute.setValue("no");
}
}
list =document.selectNodes("/student/call/name");
it=list.iterator();
while(it.hasNext()){
//标签内容的操作方法
Element nameElment=(Element)it.next();
nameElment.setText("studentname");
}
//删除某个节点是要用两层循环,因为删除当前节点必须用父节点去删除。
list=document.selectNodes("/student/call");
it=list.iterator();
while(it.hasNext()){
//获取父节点
Element scoreElement=(Element)it.next();
System.out.println(scoreElement);
@SuppressWarnings("unused")
//获取该父节点下面的需要查找的子节点
Iterator itera=scoreElement.elementIterator("English");
while(itera.hasNext()){
Element scoreEnglish=(Element)itera.next();
if(scoreEnglish.getText().equals("77")){
//利用父节点去删除
scoreElement.remove(scoreEnglish);
}
}
}
@SuppressWarnings("unused")
/* Iterator itera=document.getRootElement().elementIterator("call");
while(itera.hasNext()){
Element ele=(Element)itera.next();
System.out.println(ele);
}*/
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer;
try {
writer = new XMLWriter(new FileWriter("myxml.xml"),
format);
writer.write(document);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
ReaderDom4j.createxml();
ReaderDom4j.modifyxml();
}
}
总结如下:
创建xml文件
获取document对象
Document document =DocumentHelper.createDocument();
创建节点
父节点.addElement(“子节点”);
创建节点的内容
节点.setText(“内容”);
创建节点的属性及内容
节点.addAttribute(“属性名”,”属性值”);
修改xml的操作
获取SAXReader的对象
SAXReader reader=new SAXReader();
获取document对象
Document document=reader.read(new File(“路径名”))
获取根节点
document.getRootElement();
获取根节点一下的某个节点的迭代
Iterator it= document.getRootElement().elementIterator();
获取元素迭代器
Iterator it=document.selectNodes(“/student/call/name/@show”);(获取根节点一下call节点一下
Name节点的属性show的值)
修改属性的值
attribute.setValue();
修改标签的内容
element.setText();
删除便签
父节点.remove(子节点);
分享到:
相关推荐
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
dom4j解析xml文件代码示例 dom4j解析xml文件代码示例 dom4j解析xml文件代码示例
dom4j解析xml文件的压缩包,完整版。对jdom进行了封装。包含源码,jar包以及所需的全部内容。
dom4j解析XML文件格式dom4j解析XML文件格式dom4j解析XML文件格式
dom4j解析XML文档.ppt
完整的讲解一个dom4j对xml的增删改查
一个关于用dom4j解析xml,遍历xml,建立xml的简单例子
Java使用sax、dom、dom4j解析xml文档的代码,包含dom4j的jar包。
分别使用DOM和DOM4j解析XML文件,因为目前使用最广泛的是DOM4j所以只写了用DOM4j对XML进行增删改查。
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4j API包含一个解析XML文档的工具。本文中将使用这个解析器创建一个示例XML文档,然后使用同一个解析器...
自己写的一个dom4j解析xml文件工具类
本人自己研究的解析方法,主要用dom4j解析XML文件,进而获取里面的信息
dom4j解析xml,利用反射机制.将解析出来的信息保存到一个类当中
很详细的文档 可以借鉴下 希望对你有帮助
Dom4j解析Xml文件源码 源码描述: 一、源码介绍 通过dom4j解析自定义xml文件 二、主要功能 自定义xml文件,自定义实体,通过dom4j解析出该xml的demo 三、注意事项 开发环境为jdk1.8,无数据库
dom4j 解析xml文件小例子 dom4j 解析xml文件小例子
java dom4j 解析xml文档 使用java操作xml 例如创建 读取 删除 等等
dom4j解析xml,连接oracle数据库实例
// 读取并解析XML文档 // SAXReader就是一个管道,用一个流的方式,把xml文件读出来 // // SAXReader reader = new SAXReader(); //User.hbm.xml表示你要解析的xml文档 // Document document = reader.read...