`
luoxuanufo
  • 浏览: 22274 次
  • 性别: 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

 

分享到:
评论

相关推荐

    Udemy-Review:复习课程复习材料

    在本课程“Udemy-Review:复习课程复习材料”中,主要涵盖了“完整的2021 Web开发新手训练营”的一系列学习资源。这是一门旨在帮助初学者全面掌握Web开发技能的综合课程,通过复习材料,学员可以巩固在课程中学到的...

    JS_study_review

    "JS_study_review"很可能是对JavaScript学习的复习资料或笔记集合,包含了一个名为"JS_study_review-main"的主文件或目录。 在JavaScript的学习中,有几个关键的知识点是每个开发者都需要掌握的: 1. **基础语法**...

    vue-:vue原始码的阅读笔记和一些git操作

    Vue 的源代码是开源的,这意味着任何人都可以查看、学习和贡献其代码。本篇文章将主要围绕Vue源码的阅读笔记和Git操作进行深入探讨。 首先,Vue的核心设计理念是组件化,它的源码中大量运用了模块化和面向对象的...

    Bookend_Frontend:Bookend Review 项目的前端

    这个项目旨在提供一个用户友好的平台,用于整理、评估和分享书籍笔记与评论。在深入探讨其前端实现之前,我们需要先了解JavaScript在Web开发中的核心地位。 JavaScript,作为Web开发的三大核心技术之一(HTML、CSS...

    一个基于Qt Creator(qt,C++)实现中国象棋人机对战

    qt 一个基于Qt Creator(qt,C++)实现中国象棋人机对战.

    热带雨林自驾游自然奇观探索.doc

    热带雨林自驾游自然奇观探索

    冰川湖自驾游冰雪交融景象.doc

    冰川湖自驾游冰雪交融景象

    C51 单片机数码管使用 Keil项目C语言源码

    C51 单片机数码管使用 Keil项目C语言源码

    基于智能算法的无人机路径规划研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    前端分析-2023071100789s12

    前端分析-2023071100789s12

    Delphi 12.3控件之Laz-制作了一些窗体和对话框样式.7z

    Laz_制作了一些窗体和对话框样式.7z

    ocaml-docs-4.05.0-6.el7.x64-86.rpm.tar.gz

    1、文件内容:ocaml-docs-4.05.0-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ocaml-docs-4.05.0-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    学习笔记-沁恒第六讲-米醋

    学习笔记-沁恒第六讲-米醋

    工业机器人技术讲解【36页】.pptx

    工业机器人技术讲解【36页】

    基于CentOS 7和Docker环境下安装和配置Elasticsearch数据库

    内容概要:本文档详细介绍了在 CentOS 7 上利用 Docker 容器化环境来部署和配置 Elasticsearch 数据库的过程。首先概述了 Elasticsearch 的特点及其主要应用场景如全文检索、日志和数据分析等,并强调了其分布式架构带来的高性能与可扩展性。之后针对具体的安装流程进行了讲解,涉及创建所需的工作目录,准备docker-compose.yml文件以及通过docker-compose工具自动化完成镜像下载和服务启动的一系列命令;同时对可能出现的问题提供了应对策略并附带解决了分词功能出现的问题。 适合人群:从事IT运维工作的技术人员或对NoSQL数据库感兴趣的开发者。 使用场景及目标:该教程旨在帮助读者掌握如何在一个Linux系统中使用现代化的应用交付方式搭建企业级搜索引擎解决方案,特别适用于希望深入了解Elastic Stack生态体系的个人研究与团队项目实践中。 阅读建议:建议按照文中给出的具体步骤进行实验验证,尤其是要注意调整相关参数配置适配自身环境。对于初次接触此话题的朋友来说,应该提前熟悉一下Linux操作系统的基础命令行知识和Docker的相关基础知识

    基于CNN和FNN的进化神经元模型的快速响应尖峰神经网络 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    网络小说的类型创新、情节设计与角色塑造.doc

    网络小说的类型创新、情节设计与角色塑造

    毕业设计-基于springboot+vue开发的学生考勤管理系统【源码+sql+可运行】50311.zip

    毕业设计_基于springboot+vue开发的学生考勤管理系统【源码+sql+可运行】【50311】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - 业务管理:班级信息、学生信息、课程信息、考勤记录、假期信息、公告信息 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!

    57页-智慧办公园区智能化设计方案.pdf

    在智慧城市建设的大潮中,智慧园区作为其中的璀璨明珠,正以其独特的魅力引领着产业园区的新一轮变革。想象一下,一个集绿色、高端、智能、创新于一体的未来园区,它不仅融合了科技研发、商业居住、办公文创等多种功能,更通过深度应用信息技术,实现了从传统到智慧的华丽转身。 智慧园区通过“四化”建设——即园区运营精细化、园区体验智能化、园区服务专业化和园区设施信息化,彻底颠覆了传统园区的管理模式。在这里,基础设施的数据收集与分析让管理变得更加主动和高效,从温湿度监控到烟雾报警,从消防水箱液位监测到消防栓防盗水装置,每一处细节都彰显着智能的力量。而远程抄表、空调和变配电的智能化管控,更是在节能降耗的同时,极大地提升了园区的运维效率。更令人兴奋的是,通过智慧监控、人流统计和自动访客系统等高科技手段,园区的安全防范能力得到了质的飞跃,让每一位入驻企业和个人都能享受到“拎包入住”般的便捷与安心。 更令人瞩目的是,智慧园区还构建了集信息服务、企业服务、物业服务于一体的综合服务体系。无论是通过园区门户进行信息查询、投诉反馈,还是享受便捷的电商服务、法律咨询和融资支持,亦或是利用云ERP和云OA系统提升企业的管理水平和运营效率,智慧园区都以其全面、专业、高效的服务,为企业的发展插上了腾飞的翅膀。而这一切的背后,是大数据、云计算、人工智能等前沿技术的深度融合与应用,它们如同智慧的大脑,让园区的管理和服务变得更加聪明、更加贴心。走进智慧园区,就像踏入了一个充满无限可能的未来世界,这里不仅有科技的魅力,更有生活的温度,让人不禁对未来充满了无限的憧憬与期待。

    一种欠定盲源分离方法及其在模态识别中的应用 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

Global site tag (gtag.js) - Google Analytics