使用Dom4j 来创建 读取 修改 删除 打印 格式化 XML文档
//加入下面两个包
D:\Soft\jar\dom4j-1.6.1.jar
D:\Soft\jar\jaxen.jar
//开始
package com.itheima.xml;
import java.io.File;
import java.io.FileOutputStream;
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.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class TextDom4jParseXML {
/**
* @param args
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args) throws IOException, DocumentException {
String filename="F:/test.xml"; //不存在的文件
System.out.println("============1.创建文档");
if (createXMLFile(filename)==1)
System.out.println("创建XML文档成功!");
else
System.out.println("创建XML文件失败!");
System.out.println("=============2.读取XML文件,将文档内容输出到控制台");
read(getDocument(filename));
System.out.println();
System.out.println("=============3.修改XML文档内容,输出修改后的文档内容");
update(filename, "songshu", "liushu");
toControl(filename, getDocument(filename)); //输出修改后的文档,然后保存修改后的文档
System.out.println("============4.删除编号为002的节点,输出删除后的文件");
delete(filename, "002");
toControl(filename, getDocument(filename));
System.out.println("============5.输出节点(/trees/tree)");
print(filename);
System.out.println("============6.格式化文件解决中文问题");
if(formatXML(filename, "GBk")==1){
System.out.println("格式化文档成功!");
}else
System.out.println("格式化失败!");
}
//手动创建一个XML文件 输出到制定的文件下
public static int createXMLFile(String filename){
int returnVale=0; //返回操作的结果 0 表示失败, 1表示成功
//创建XML文件
Document document=DocumentHelper.createDocument();
//创建根节点
Element treesElement=document.addElement("trees");
treesElement.addComment("This is a test for dom4j"); //加入一行注释
//加入 第一个tree节点
Element treeElement=treesElement.addElement("tree");
treeElement.addAttribute("id","001"); //添加id属性内容
treeElement.addAttribute("name", "rongshu"); //添加 name属性内容
Element descElement=treeElement.addElement("description");
descElement.setText("It is a big tree"); //为 descriiption 设置内容
//添加第二个节点
treeElement=treesElement.addElement("tree");
treeElement.addAttribute("id", "002");
treeElement.addAttribute("name", "yangshu");
descElement=treeElement.addElement("description");
descElement.setText("The tree grows taller form day to day");
//添加第三个节点
treeElement=treesElement.addElement("tree");
treeElement.addAttribute("id", "003");
treeElement.addAttribute("name", "songshu");
descElement=treeElement.addElement("description");
descElement.setText("The tree is very beautiful");
Element ownerElement=treesElement.addElement("flower");
ownerElement.setText("rose");
try {
//创建XML文件对象
XMLWriter writer=new XMLWriter(new FileWriter(new File(filename)));
writer.write(document);
writer.close();
returnVale=1;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return returnVale;
}
public static void read(Document document) throws IOException{
XMLWriter writer=new XMLWriter(new FileWriter("F:/output.xml"));
writer.write(document);
writer.close();
//将文件内容缩进方式输出到控制台
OutputFormat format=OutputFormat.createPrettyPrint();
writer=new XMLWriter(System.out, format);
writer.write(document);
//讲文件内容紧凑的输出到控制台
format=OutputFormat.createCompactFormat();
writer =new XMLWriter(System.out, format);
writer.write(document);
}
//读取文件获取document
public static Document getDocument(String filename) throws DocumentException{
SAXReader saxReader=new SAXReader();
Document document=saxReader.read(new File(filename));
return document;
}
//删除 XML文件中指定的id节点
public static boolean delete(String filename,String id) throws DocumentException{
boolean returnValue=false;
Document document=getDocument(filename); //调用方法获取document
Element root=document.getRootElement(); //获得根节点
List list=document.selectNodes("/trees/tree/@id"); //获取编号的列表
Iterator iter=list.iterator();
while (iter.hasNext()) {
Attribute attribute=(Attribute)iter.next();
if(attribute.getValue().equals(id)){
Element element=attribute.getParent();
root.remove(element);
}
}
try {
XMLWriter writer=new XMLWriter(new FileOutputStream(new File(filename)));
writer.write(document);
writer.close();
returnValue=true;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return returnValue;
}
return returnValue;
}
//修改xml文件中的指定的节点内容 ,并且 添加内容
public static int update(String filename,String oldName,String newName){
int returnValue=0;
try {
Document document=getDocument(filename);
List list=document.selectNodes("/trees/tree/@name");
Iterator iter=list.iterator();
while (iter.hasNext()) {
Attribute attribute = (Attribute)iter.next();
if(attribute.getValue().equals(oldName)){
attribute.setValue(newName);
}
}
list=document.selectNodes("/trees/flower");
iter=list.iterator();
if(iter.hasNext()){
Element flower=(Element)iter.next();
flower.setText("lily");
Element date=flower.addElement("date");
date.setText("2009-04-10");
date.addAttribute("type", "calendar");
}
try {
XMLWriter writer=new XMLWriter(new FileWriter(new File(filename)));
writer.write(document);
writer.close();
returnValue=1;
} catch (Exception e) {
// TODO: handle exception
System.out.println("修改XML文件出错:"+e.getMessage());
returnValue=0;
}
} catch (Exception e) {
System.out.println("修改XML文件出错:"+e.getMessage());
returnValue=0;
}
return returnValue;
}
//格式化XML文档并且解决中文乱码
public static int formatXML(String filename,String encoding){
int returnValue=0;
try {
Document document=getDocument(filename);
XMLWriter writer=null;
//格式化输出,类型和ID浏览一样
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding(encoding); //指定XML的编码方式
writer=new XMLWriter(new FileWriter(new File(filename)),format);
writer.write(document);
writer.close();
returnValue=1;
} catch (Exception e) {
System.out.println("格式化XML文档出错:"+e.getMessage());
returnValue=0;
}
return returnValue;
}
public static void toControl(String filename,Document document){
try {
XMLWriter writer=new XMLWriter(new FileWriter(filename));
writer.write(document); //将文档内容输出到文件
writer.close();
//将文档内容格式化输出到控制台
OutputFormat format=OutputFormat.createPrettyPrint();
writer=new XMLWriter(System.out,format);
writer.write(document);
} catch (Exception e) {
// TODO: handle exception
System.out.println("输出出错:"+e.getMessage());
}
}
//将xml转化成String
public static String XmlToString(Document document){
return document.asXML();
}
//将String 转换成 document
public static Document StrintToDocument(String text){
try {
return DocumentHelper.parseText(text);
} catch (Exception e) {
System.out.println("转换出错:"+e.getMessage());
return null;
}
}
//输出节点
public static void print(String filename){
try {
Document doc=getDocument(filename);
Node node=doc.selectSingleNode("/trees/tree");
System.out.println("输出节点:"+node.asXML()); //将节点转化成String
} catch (Exception e) {
// TODO: handle exception
System.out.println("输出节点出错:"+e.getMessage());
}
}
}
分享到:
相关推荐
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...