能够操作xml的api还是挺多的,DOM也是可以的,不过在此记录下dom4j的使用,感觉确实挺方便的

所需jar包官网地址:http://www.dom4j.org/dom4j-1.6.1/

dom4j相关的重要类和方法

SAXReader,用于读取外部的xml文件,实例

SAXReader reader=new SAXReader();

Document document=reader.read(new File("f:/test.xml"));

SAXReader 的read方法可以读取外部的xml文件,返回一个Document 对象

Document,dom4j的一个文档对象,用于操作xml文档的结构,可通过调用它的getRootElement()方法获取根元素Element对象

Document document=reader.read(new File("f:/test.xml"));

Element root=document.getRootElement();

Element,元素对象,它的方法还是挺多的,是主要操作对象。方法如下:

element("ElementName"),方法可以获取该元素标签中的名称为ElementName的子Element元素对象

Element root=document.getRootElement();
Element element=root.element("红楼梦");

attribute("id") ,获取属性为id的Attribute对象

Attribute attr=element.attribute("id");

addElement("ElementName"),添加一个新的子Element标签,名字为ElementName

addText(""),为element对象添加 text值

Element e=element.addElement("朝代");
e.addText("唐朝");

remove(Attribute),移除一个指定的Attribute对象

Element element=root.element("红楼梦");
Attribute attr=element.attribute("id");
element.remove(attr);

addAttribute("name","value"),添加一个新的属性

element.addAttribute("作者", "wang");

addCDATA("")添加一段不可解析的字符

element.addCDATA("红楼梦是中国四大名著之一");

Attribute,属相对象,操作属性值,通过Element对象的Attribute("")方法获取

XMLWriter,用于输出xml到指定文件

OutputFormat format = OutputFormat.createPrettyPrint(); //格式化输出文件
format.setEncoding("UTF-8");
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("f:/test2.xml")),format);
xmlWriter.write(document);

实例代码

test.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<四大名著>
<西游记 id="x001">
<作者>吴承恩1</作者>
<作者>吴承恩2</作者>
<朝代>明朝</朝代>
</西游记>
<红楼梦 id="x002">
<作者>曹雪芹</作者>
</红楼梦>
</四大名著>

执行代码如下:

package util;

import java.io.File;
import java.io.FileOutputStream; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class XmlUtil { public static void main(String[] args) {
parseXml();
} public static String parseXml(){
String xmlResult = null;
SAXReader reader=new SAXReader(); try {
Document document=reader.read(new File("f:/test.xml")); Element root=document.getRootElement();
Element element=root.element("红楼梦");
Attribute attr=element.attribute("id");
element.remove(attr);
element.addAttribute("作者", "wang");
Element e=element.addElement("朝代");
e.addText("清朝");
element.addCDATA("红楼梦是中国四大名著之一"); OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("f:/test2.xml")),format);
xmlWriter.write(document);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xmlResult;
}
}

执行后,生成了test2.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<四大名著>
<西游记 id="x001">
<作者>吴承恩1</作者>
<作者>吴承恩2</作者>
<朝代>明朝</朝代>
</西游记>
<红楼梦 作者="wang">
<作者>曹雪芹</作者>
<朝代>清朝</朝代><![CDATA[红楼梦是中国四大名住著之一]]>
</红楼梦>
</四大名著>

XML文件操作之dom4j的更多相关文章

  1. 我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!

    我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...

  2. C# XML文件操作

    C# XML文件操作 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-09 参考 LINQ to XML System.Xml ...

  3. XML文件解析之DOM4J解析

    1.DOM4J介绍 dom4j的官网是http://www.dom4j.org/dom4j-1.6.1/,最新的版本是1.6.1,根据官网介绍可知.dom4j是一个易用的.开源的库,应用于Java平台 ...

  4. XML文件操作类--创建XML文件

    这个类是在微软XML操作类库上进行的封装,只是为了更加简单使用,包括XML类创建节点的示例. using System; using System.Collections; using System. ...

  5. PHP对XML文件操作之属性与方法讲解

    DOMDocument相关的内容. 属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataType 返回此节点的数据类型 Definit ...

  6. 7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml

     数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDef ...

  7. SpringBatch Sample (三)(XML文件操作)

    前篇关于Spring Batch的文章,讲述了Spring Batch 对CSV文件的读写操作. 本文将通过一个完整的实例,与大家一起讨论运用Spring Batch对XML文件的读写操作.实例流程是 ...

  8. C#XML文件操作随笔

    以为公司一直没有电源屏厂家协议解析为DevVars相关的软件,手写费时费力还容易出错,用了2天时间做了一个.txt协议文件筛选加并解析成xml文件的工具,总结一下用到的几个知识点 1.LINQ 是一个 ...

  9. XML文件(2)--使用DOM4J示例

    其他依赖字段/方法 private List<Book> bookList = new LinkedList<Book>(); public List<Book> ...

随机推荐

  1. linux backtrace()详细使用说明,分析Segmentation fault

    linux backtrace()详细使用说明,分析Segmentation fault 在此之前,开发eCos应用程序时,经常碰到程序挂掉后,串口打印输出一大串让人看不懂的数据.今天才明白,原来这些 ...

  2. python第九周:paramiko多线程、队列

    1.paramiko模块 用处:连接远程服务器并执行相关操作 使用方法: SSHClient:连接远程服务器并执行基本命令 import paramiko #创建SSH对象 ssh = paramik ...

  3. Python SQLAlchemy ORM示例

    SQLAlchemy的是Python的SQL工具包和对象关系映射,给应用程序开发者提供SQL的强大功能和灵活性. 安装 pip install mysql-python pip install sql ...

  4. java反射,简单demo

    直接上码 //获取方法.属性.构造函数时加 Declared 表示获取本类全部的,不分修饰符:不加 Declared 表示获取从父类继承的和本类公共的 //获取 First 类的无参构造函数 Cons ...

  5. Zookeeper-单机/集群安装

    简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少量信息.Hadoo ...

  6. POJ 2029

    二维树状数组可解此题 #include <iostream> #include <cstdio> #include <cstring> #include <a ...

  7. POJ 1265

    主要利用PICK定理与边点数上的GCD的关系求解. 三角形一条边上的所有整数点(包括顶点)可以首先将这条边移到(0, 0)->(x, y).这时,(x/gcd(x, y), y/gcd(x, y ...

  8. CSDN日报20170416 ——《为什么程序猿话少钱多死得早?》

    [程序人生]为什么程序猿话少钱多死得早? 作者:文奇 我在想,程序猿都是话少吗?不一定吧.像我和我的同学.都是话非常多啊. 可是经历过非常多事的如今.再想想,发现事实的确如此.程序猿确实话少. 我是一 ...

  9. HttpSession的深入分析与研究

    HTTP是无状态协议,这意味着每次client检索网页时,都要单独打开一个server连接,因此server不会记录下先前client请求的不论什么信息. 有三种方法来维持client与server的 ...

  10. GitLab 7.5.3 CentOS7安装和SMTP配置

    CentOS 7安装GitLab还是比較简单的,依照官方文档的提示一步一步操作下来.就一个地方须要改动. 參考:GitLab安装说明 在安装好以后,执行 gitlab-ctl reconfigure ...