DOM4J学习(一)

DOM4J类似于一个简单数据库,使用之前须了解java的xml,xml是一种可扩展的标记语言,用于传输数据和存储数据下面是一个简单的xml例子:

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE students SYSTEM "students.dtd">
<srudents>
  <student id ="001">
    <name>黄</name>
    <age>40</age>
    <sex>男</sex>
  </student>
<pre name="code" class="html"></srudents>

 

这是描述个人信息的xml解析文件

*DOM4J是xml文档的解析方式方式之一,其他方式还有DOM,SAX,JDOM.

*DOM4J的优点是性能高,功能强大,使用简单,在后面会详细体会到其优点。

*一个xml文件只有一个根节点 其中<students></students>是根节点 ,根节点和根节点中的所有标签都是元素节点 , <student id ="001">中的id是属性节点,<age>40</age>中的“40”是文本节点,<!-- -->xml文档中的注释信息

DTD用于定义XML文档的合法建立

如:student.dtd用于定义student.xml文件的结构,可看出定义得到数据类型结构

student.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT students (student+)>
  <!ELEMENT student (name,age,sex)>
  <!ELEMENT name    (#PCDATA)>
  <!ELEMENT age (#PCDATA)>
  <!ELEMENT sex    (#PCDATA)>
  <!ATTLIST student id ID #REQUIRED>

student.xml

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE students SYSTEM "students.dtd">

<students>
  <student id="s001">
    <name>黄渤</name>
    <age>40</age>
    <sex>男</sex>
  </student>
  <student id="s002">
    <name>黄磊</name>
    <age>45</age>
    <sex>男</sex>
  </student>
  <student id="s003">
    <name>黄蓉</name>
    <age>20</age>
    <sex>女</sex>
  </student>
  <student id="s004">
    <name>黄圣衣</name>
    <age>30</age>
    <sex>女</sex>
  </student>
  <student id="s005">
    <name>黄老邪</name>
    <age>60</age>
    <sex>男</sex>
  </student>
</students>


接下来将会用到dom4j的类库,需要下载jar包(包附在附件中),将jar包设置到classpath中,将jar包设置到classpath中,就可以使用dom4j中提供的对象,进行xml文档的解析了。

类库中提供了一下方法一共操作解析文件的数据

首先我们来更改文本节点中的内容
AlterInfo.java

package pack;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

import org.dom4j.Element;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class AlterInfo {
	public static void main(String[] args) throws DocumentException,
			IOException {
		File xmlFile = new File("students.xml"); // 读取解析文件
		SAXReader reader = new SAXReader(); // 创建一个SAXReader的对象用来解析xml文件
		Document xmlDocument = reader.read(xmlFile);// 解析文件
		Element root = xmlDocument.getRootElement();// 获取元素对象
		List<Element> list = root.elements();// 通过elements()方法,元素对象会返回一个List集合类
		for (Element elements : list) { // 通过遍历的方式查找出叫黄渤的人
			if (elements.elementText("name").equals("黄渤")) {
				// System.out.println( elements.element("sex").getText());\
				elements.element("sex").setText("未知");// 将其系别改成未知
			}
		} // 此时意见内容修改,未写入解析文件中
			// 接下来重新写一个文件并替换原来的文件
		FileWriter fw = new FileWriter("students.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("GBK");// 定义文本文档格式
		XMLWriter write = new XMLWriter(fw, format);
		write.write(xmlDocument);
		write.close();
		fw.close();
	}
}
 

附件:dom4j包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值