java dom4j解析_java dom4j解析器使用

java dom4j解析_java dom4j解析器使用JavaDOM4J解析器介绍DOM4J是一个开源的,基于Java的库来解析XML文档,它具有高度的灵活性,高性能和内存效率的API。这是java的优化,使用Java集合像列表和数组。它可以使用DOM,SAX,XPath和XSLT。它解析大型XML文档时具有极低的内存占用。优点DOM4J使Java开发的灵活性和XML解析代码易于维护。它是轻量级的,快速的API。DOM4J类DOM4J定义了几个J…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Java DOM4J解析器

介绍

DOM4J是一个开源的,基于Java的库来解析XML文档,它具有高度的灵活性,高性能和内存效率的API。这是java的优化,使用Java集合像列表和数组。它可以使用DOM,SAX,XPath和XSLT。它解析大型XML文档时具有极低的内存占用。

优点

DOM4J使Java开发的灵活性和XML解析代码易于维护。它是轻量级的,快速的API。

DOM4J 类

DOM4J定义了几个Java类。以下是最常见的类:

Document – 表示整个XML文档。文档Document对象是通常被称为DOM树。

Element – 表示一个XML元素。 Element对象有方法来操作其子元素,它的文本,属性和名称空间。

Attribute – 表示元素的属性。属性有方法来获取和设置属性的值。它有父节点和属性类型。

Node – 代表元素,属性或处理指令

常见DOM4J的方法

当使用DOM4J,还有经常用到的几种方法:

SAXReader.read(xmlSource)() – 构建XML源的DOM4J文档。

Document.getRootElement() – 得到的XML的根元素。

Element.node(index) – 获得在元素特定索引XML节点。

Element.attributes() – 获取一个元素的所有属性。

Node.valueOf(@Name) – 得到元件的给定名称的属性的值。

创建与解析XML示例

package com.example;

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.util.Iterator;

import java.util.List;

import org.dom4j.Attribute;

import org.dom4j.Document;

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 Demo01 {

@Test

public void readXMLDemo() throws Exception {

// 创建saxReader对象

SAXReader reader = new SAXReader();

// 通过read方法读取一个文件 转换成Document对象

Document document = reader.read(new File(“src/car.xml”));

//获取根节点元素对象

Element node = document.getRootElement();

//遍历所有的元素节点

// listNodes(node);

elementMethod(node);

}

@Test

public void createXMLDemo() throws Exception {

Document document = DocumentHelper.createDocument();

Element root = document.addElement( “cars” );

Element supercarElement= root.addElement(“supercars”)

.addAttribute(“company”, “Ferrai”);

supercarElement.addElement(“carname”)

.addAttribute(“type”, “Ferrari 101”)

.addText(“Ferrari 101”);

supercarElement.addElement(“carname”)

.addAttribute(“type”, “sports”)

.addText(“Ferrari 202”);

// 写入到一个新的文件中

writer(document);

}

/**

* 把document对象写入新的文件

*

* @param document

* @throws Exception

*/

public void writer(Document document) throws Exception {

// 紧凑的格式

// OutputFormat format = OutputFormat.createCompactFormat();

// 排版缩进的格式

OutputFormat format = OutputFormat.createPrettyPrint();

// 设置编码

format.setEncoding(“UTF-8”);

// 创建XMLWriter对象,指定了写出文件及编码格式

// XMLWriter writer = new XMLWriter(new FileWriter(new

// File(“src//a.xml”)),format);

XMLWriter writer = new XMLWriter(new OutputStreamWriter(

new FileOutputStream(new File(“src//car.xml”)), “UTF-8”), format);

// 写入

writer.write(document);

// 立即写入

writer.flush();

// 关闭操作

writer.close();

}

/**

* 遍历当前节点元素下面的所有(元素的)子节点

*

* @param node

*/

public void listNodes(Element node) {

System.out.println(“当前节点的名称::” + node.getName());

// 获取当前节点的所有属性节点

List list = node.attributes();

// 遍历属性节点

for (Attribute attr : list) {

System.out.println(attr.getText() + “—–” + attr.getName()

+ “—” + attr.getValue());

}

if (!(node.getTextTrim().equals(“”))) {

System.out.println(“文本内容::::” + node.getText());

}

// 当前节点下面子节点迭代器

Iterator it = node.elementIterator();

// 遍历

while (it.hasNext()) {

// 获取某个子节点对象

Element e = it.next();

// 对子节点进行遍历

listNodes(e);

}

}

/**

* 介绍Element中的element方法和elements方法的使用

*

* @param node

*/

public void elementMethod(Element node) {

// 获取node节点中,子节点的元素名称为supercars的元素节点。

Element e = node.element(“supercars”);

// 获取supercars元素节点中,子节点为carname的元素节点(可以看到只能获取第一个carname元素节点)

Element carname = e.element(“carname”);

System.out.println(e.getName() + “—-” + carname.getText());

// 获取supercars这个元素节点 中,所有子节点名称为carname元素的节点 。

List carnames = e.elements(“carname”);

for (Element cname : carnames) {

System.out.println(cname.getText());

}

// 获取supercars这个元素节点 所有元素的子节点。

List elements = e.elements();

for (Element el : elements) {

System.out.println(el.getText());

}

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159385.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月26日 下午1:16
下一篇 2022年7月26日 下午1:36


相关推荐

  • pycharm选择运行环境_python编程入门

    pycharm选择运行环境_python编程入门本文实例讲述了pycharm中python环境配置常见问题。分享给大家供大家参考,具体如下:1、问题的发现最近在用pycharm下的命令行工具安装、运行jupyternotebook时kernal一直报错,报错最下面两行如下所示importwin32apiimporterror:dllloadfailed:找不到指定的模块。经过网络搜索发现是无法正确解析python的路径,可能是pyt…

    2022年8月28日
    8
  • Qt面试笔试题问答经验总结

    Qt面试笔试题问答经验总结相信很多人和我一样,虽然经常用qt做些东西,但其实对qt理解并不是很深,尤其在岗位有相关需要的时候也会遇到很多坑。感觉网上也比较少,所以根据个人的面试经验,总结了一些面试qt的问题。答案为我自己的理解总结,有问题还请大佬指出。1.为什么要用qt来做界面Qt的跨平台性很强,比如同样一套代码写好pro文件可以在windows/linux/Android等直接编译。2.信号槽机制在事件的处理方面…

    2022年6月25日
    159
  • Ubuntu clion激活码2021.7【中文破解版】

    (Ubuntu clion激活码2021.7)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月20日
    355
  • android redis客户端,redis client (redis客户端)

    android redis客户端,redis client (redis客户端)redisclient(redis客户端)是一款编程辅助软件。这款软件协助开发人员和保护人员便利的树立,修正,删去,查询redis数据,彻底不需要了解redis指令。能够让用户便利的修改数据,剪切,仿制,张贴redis数据,能够导入,导出redis数据,能够对redis数据排序,进步编程功率和准确性。redisclient(redis客户端)软件功用重命名Redis数据更新Redis…

    2022年5月9日
    47
  • 深入浅出Python——Python基础语法全解

    深入浅出Python——Python基础语法全解前言:Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。文章目录一、Python简介1.了解Python2.Python介绍3.Python特点4.Python发展历史5.Python版本二、Python解释器1.解释器的作用2.解释器的安装三、PyCharm安装与使用1.PyCharm的作用2.PyCharm安装与使用四、注释1.注释的作用2.注释的分类及语法五、变量1.变量的作用2.定义变量2.1标识符2.2命名习惯2.3使用变量2.4认识

    2022年6月24日
    24
  • springboot实战第三章

    springboot实战第三章

    2021年5月15日
    124

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号