`
luoxuanufo
  • 浏览: 21901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Review - Dom4j学习笔记(一)

阅读更多

(我是一个JAVA新手,基础很差,希望能结识更多的朋友,共同进步。MSN:luoxuanufo@hotmail.com

前言:看的快,忘得也快,要提高,就要勤review。最近做的东西涉及到一些Dom4j的知识。简单的写下我的学习笔记,很简单,很肤浅,希望可以慢慢提高。

 

主要接口都在org.dom4j这个包里定义:

Attribute

 

 

 

 

Attribute定义了XML的属性

 

 

 

 

 

Branch

 

 

 

 

Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为,

 

 

 

 

 

CDATA

 

 

 

 

CDATA 定义了XML CDATA 区域

 

 

 

 

 

CharacterData

 

 

 

 

CharacterData是一个标识借口,标识基于字符的节点。如CDATAComment, Text.

 

 

 

 

 

Comment

 

 

 

 

Comment 定义了XML注释的行为

 

 

 

 

 

Document

 

 

 

 

定义了XML文档

 

 

 

 

 

DocumentType

 

 

 

 

DocumentType 定义XML DOCTYPE声明

 

 

 

 

 

Element

 

 

 

 

Element定义XML 元素

 

 

 

 

 

ElementHandler

 

 

 

 

ElementHandler定义了 Element 对象的处理器

 

 

 

 

 

ElementPath

 

 

 

 

ElementHandler 使用,用于取得当前正在处理的路径层次信息

 

 

 

 

 

Entity

 

 

 

 

Entity定义 XML entity

 

 

 

 

 

Node

 

 

 

 

Node为所有的dom4jXML节点定义了多态行为

 

 

 

 

 

NodeFilter

 

 

 

 

NodeFilter 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate

 

 

 

 

 

ProcessingInstruction

 

 

 

 

ProcessingInstruction 定义 XML 处理指令.

 

 

 

 

 

Text

 

 

 

 

Text 定义XML 文本节点.

 

 

 

 

 

Visitor

 

 

 

 

Visitor 用于实现Visitor模式.

 

 

 

 

 

XPath

 

 

 

 

XPath 在分析一个字符串后会提供一个XPath 表达式

 

 

 

 

 

 

 

简单的一个小例子,writeXML

package dom4j;

import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Dom4jTest {
	/**
	 * 写XML文件
	 */
	public void writeXML(String path) {
		Document document = createDocument();
		write(document, path);
	}

	/**
	 * 写入文件
	 * 
	 * @param document
	 * @param path
	 */
	private void write(Document document, String path) {
		// XMLWriter writer = null;
		try {
			XMLWriter writer = new XMLWriter(new FileOutputStream(
					new File(path)));
			writer.write(document);
			writer.close();
			OutputFormat format = OutputFormat.createPrettyPrint();// 定义文档的格式为美化型(pretty)
			format.setEncoding("GBK");// 格式编码为“gbk”
			writer = new XMLWriter(System.out, format);
			writer.write(document);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 建立Document XML文件
	 * 
	 * @return
	 */
	private Document createDocument() {
		Document document = DocumentHelper.createDocument();
		Element rootElement = document.addElement(QName.get("Message",
				"http://www.iteye.com/message"));
		Element catalogElement = rootElement.addElement("Header");
		catalogElement.addElement("Version").addText("1.0");
		catalogElement.addElement("MessageId").addText("STO");
		catalogElement.addElement("CorrelationId").addText("10000");
		catalogElement.addElement("FromSite").addText("AIRPORT_SITE");
		catalogElement.addElement("ToService").addText("RegisterService");
		catalogElement.addElement("Personnel").addText("0001223");
		catalogElement.addElement("Reserve").addText("STRING");
		catalogElement.addElement("GroupId").addText("1000001");
		catalogElement.addElement("GroupSize").addText("3");
		catalogElement.addElement("GroupIndex").addText("1");
		Element articleElement = catalogElement.addElement("ToSites");
		articleElement.addElement("ToSite").addText("DATA_CENTER_SITE");
		return document;
	}

	public static void main(String[] args) {
		Dom4jTest test = new Dom4jTest();
		test.writeXML("d:/message.xml");
	}
}

 

 

简单说明:

Document document = DocumentHelper.createDocument(); 通过这句定义一个XML文档对象。

 Element rootElement = document.addElement(QName.get("Message",http://www.iteye.com/message)); 通过这句定义一个XML元素,这里添加的是根节点。
Element有几个重要的方法:
l         addComment:添加注释
l         addAttribute:添加属性
l         addElement:添加子元素

最后通过write生成物理文件,默认生成的XML文件排版格式比较乱,通过OutputFormat类的createPrettyPrint()方法,定义文档的格式为美化型(pretty)
 

这是一个简单的小例子,以下是我找到的一些资料,方便学习查看

Dom4j的使用 http://luoxuanufo.iteye.com/admin/blogs/265404

DOM4J解析XML(英文) http://java.banzhu.net/article/java-6-163133.html

Dom4j学习笔记 http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/dom4j.html

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics