用dom4j对xml文档解析

package com.huowolf.dom4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.List;

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;
import org.junit.Test;

public class Demo1 {
		//读取xml文档的第二本书:<name>安徒生童话</name>
		@Test
		public void read() throws DocumentException {
			SAXReader reader = new SAXReader();
			 Document document = reader.read(new File("books.xml"));

			 Element root = document.getRootElement();
			 Element book = (Element)root.elements("book").get(1);
			 //获取Text
			 String text= book.elementText("name");
			 System.out.println(text);
			 //获取value
			 String value = book.attributeValue("id");
			 System.out.println(value);

		}

		//在第一本书上添加一个国籍:<language>English</language>
		@Test
		public void add() throws DocumentException, IOException {
			 SAXReader reader = new SAXReader();
			 Document document = reader.read(new File("books.xml"));

			 Element book = document.getRootElement().element("book");
			 book.addElement("language").setText("English");

			 //输出文件
		      XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("books.xml"),"UTF-8"));
		      /*
		       * 格式化输出器可以指定码表
		       * OutputFormat format = OutputFormat.createPrettyPrint();
		       * format.setEncoding("gb2312");
		       * writer = new XMLWriter( System.out, format );
		       */

		      writer.write( document );
	          writer.close();
		}

		//在第一本书的指定位置上添加一个新的售价:<price>95</price>
		@Test
		public void add2 ()throws Exception{
			 SAXReader reader = new SAXReader();
			 Document document = reader.read(new File("books.xml"));

			 Element book = document.getRootElement().element("book");

			List<Element> list = book.elements();

			 Element price = DocumentHelper.createElement("price");
			 price.setText("95");
			 list.add(3, price);

			 OutputFormat format = OutputFormat.createPrettyPrint();
			 format.setEncoding("UTF-8");

			 XMLWriter writer = new XMLWriter(new FileOutputStream("books.xml"), format);
			 writer.write(document);
			 writer.close();
		}

		//删除指定节点:<price>89</price>
		@Test
		public void delete() throws DocumentException, IOException {
			SAXReader reader = new SAXReader();
			 Document document = reader.read(new File("books.xml"));

			 Element price = (Element) document.getRootElement().element("book").elements("price").get(1);
			 price.getParent().remove(price);

			 OutputFormat format = OutputFormat.createPrettyPrint();
			 format.setEncoding("UTF-8");

			 XMLWriter writer = new XMLWriter(new FileOutputStream("books.xml"), format);
			 writer.write(document);
			 writer.close();
		}
}

时间: 2024-07-29 13:07:07

用dom4j对xml文档解析的相关文章

xml文档解析

XML文档解主要分为四种解析方式,官方提供的两种分别是:DOM 和 SAX,第三方分别是:JDOM 和 DOM4j 测试用的xml文档: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <user> 3 <uname type="3">zhangsan</uname> 4 <uname type="2">王麻子</uname

Dom4j读取xml文档

package gz.itcast.a_dom4j_read; import java.io.File; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; /** * 第一个Dom4j读取xml文档的例子 * @author APPle * */ public class Demo1 { public static void main(String[] arg

dom4j与XML文档操作

dom4简介 1.  DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP.  DOM4J 最大的特色是使用大量的接口.它的主要接口都在org.dom4j里面定义 Attribute 定义了 XML 的属性. Branch 指能够包含子节点的节点.如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为 CDATA 定义了 XML CDATA 区域 Charac

安卓xml文档解析

2014-12-27   14:53:32 解析xml文档 用xml文档存储数据 1.获得文件的路径 1 File path = new File(Environment.getExternalStorageDirectory(), "persons.xml"); 2.建立文件输出流 1 FileInputStream fis = new FileInputStream(path); 3.获得xml文档解析器对象 1 XmlPullParser parser=Xml.newPullPa

jsoup -- xml文档解析

jsoup -- xml文档解析 修改 https://jsoup.org/cookbook/modifying-data/set-attributes https://jsoup.org/cookbook/modifying-data/set-html https://jsoup.org/cookbook/modifying-data/set-text 时间 2014-06-20 07:01:12  ITeye-博客 原文  http://zsjdxc251.iteye.com/blog/20

java通过dom4j处理xml文档

最近在用dom4j处理xml的数据接口,将java利用dom4j处理xml的过程记录下来. 导入jar包:dom4j-1.6.jar 下载地址:http://www.java2s.com/Code/JarDownload/dom4j/dom4j-1.6.jar.zip 自己写了个xml文档 1 <school> 2 <student> 3 <name>老子</name> 4 <no>20140804</no> 5 <majors

浅析如何将XML文档解析成java对象(待梳理)

User类 public class User implements Serializable { private static final long serialVersionUID = 7506854293380407436L; private Integer id; private String loginName; private String password; private Date createDate; private String username; public User(

使用Dom4j对XML文档创建与解析

创建XML文件: public class Dom4jCreateXml { public void testCreatXml() { //创建文档对象 Document document = DocumentHelper.createDocument(); //创建跟节点 Element root = document.addElement("students"); //根据根节点创建子节点 Element stu01 = root.addElement("student&

关于XML文档解析(DOM和SAX)

DOM解析方式是将整个XML文档以document形式构架在内存中,当XML文档很大时,可能会造成OOM(内存溢出).而SAX则是一行行的去解析的,速度很快. DOM解析: 1,通过DocumentBuilderFactory创建DOM解析工厂; 2,由工厂获取DocumentBuilder解析器对象; 3,通过解析器将XML转换成Document对象 注:在对XML文档进行修改后,需要利用TransFormerFactory对其进行更新. SAX解析: 1,通过SAXParserFactory