java之xml解析-dom4j
解析方式
XML 解析方式有很多种,但是常用的有两种,如下:
DOM
Document Object Model:把整个 XML 读到内存中,形成树状结构。整个文档为 Document 对象,属性为 Attribute 对象,元素节点为 Element 对象,文本也可以称之为 Text 对象,以上所有对象都可以称之为 Node 节点。如果 XML特别大,那么会造成内存溢出。可以利用它对 XML 文档进行增删操作。
SAX
Simple API for XML:基于事件驱动,读取一行,解析一行。不会造成内存溢出。只能查询,不可以进行增删操作。
Dom4j使用
依赖jar包
dom4j-1.6.1.jar jaxen-1.1-beta-6.jar
使用
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student>
<name id="1">杨幂</name>
<age>32</age>
</student>
<student>
<name>郭德纲</name>
<age>18</age>
</student>
</students>
student.xml
package com.zze.test;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;
public class XMLParseTest {
/**
* Element 方式解析
*/
@Test
public void test1() {
try {
// 创建 SAX 读取对象
SAXReader saxReader = new SAXReader();
// 指定读取源
Document document = saxReader.read(this.getClass().getClassLoader().getResourceAsStream("com/zze/xml/student.xml"));
// 获取根元素
Element rootElement = document.getRootElement();
List<Element> studentElements = rootElement.elements("student");
for (Element studentElement : studentElements) {
String name = studentElement.element("name").getText();
Integer age = Integer.parseInt(studentElement.element("age").getText());
System.out.println(String.format("name:%s", name));
System.out.println(String.format("age:%s", age));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* XPath 方式解析
* 要使用 XPath ,需要添加 jar 支持:jaxen-1.1-beta-6.jar
*/
@Test
public void test2() {
Document document = null;
try {
SAXReader saxReader = new SAXReader();
document = saxReader.read(this.getClass().getClassLoader().getResourceAsStream("com/zze/xml/student.xml"));
Element rootElement = document.getRootElement();
// 获取文档中所有 name 节点
List<Element> nameElements = rootElement.selectNodes("//name");
for (Element nameElement : nameElements) {
System.out.println(nameElement.attribute("id") != null ? nameElement.attribute("id").getText() : "");
System.out.println(nameElement.getText());
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
java之xml解析-dom4j的更多相关文章
- java的XML解析(DOM4J技术)
DOM4J技术解析XML文件 一,XML简介 xml (可扩展标记语言) 全称: Extended Markup Language 可扩展的含义:允许程序员按照自己的想法去扩展新的标签 注意:但是扩 ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- Java的XML解析
XML:(eXtensible Markup Language) 可扩展标记语言 是一种数据格式,用于存储和传输数据 声明一个xml文件 <?xml version="1.0" ...
- 【Java】XML解析之DOM4J
DOM4J介绍 dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP,使用需要引用dom4j.jar包 ...
- XML解析-Dom4j的DOM解析方式更新XML
Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文 ...
- 【Java】XML解析之SAX
SAX介绍 SAX(Simple API for XML)是一种事件驱动的流式XML文件处理方式,区别与DOM方式的是不需要在内存中建一棵DOM树,而是根据读取XML时遇到的标签事件来顺序处理,因此具 ...
- 【Java】XML解析之DOM
DOM介绍 DOM(Document Object Model)解析是官方提供的XML解析方式之一,使用时无需引入第三方包,代码编写简单,方便修改树结构,但是由于DOM解析时是将整个XML文件加载到内 ...
- java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class
package com.swift.kaoshi; import java.io.File; import java.util.List; import java.util.Scanner; impo ...
- java:xml解析
DOM.SAX.JDOM.DOM4J四种解析:https://www.cnblogs.com/longqingyang/p/5577937.html Java解析XML文件例子:https://blo ...
随机推荐
- Variable number of arguments (Varargs)
A parameter of a function (normally the last one) may be marked with vararg modifier: fun <T> ...
- Scratch 可能能帮你找到学习编程的初心
Scratch 是MIT 出品的一款少儿编程软件,基于Adobe Air开发,这个运行环境在如今已经显得有些过时,但只要这个软件有用,软件本身就不会过时. 编程的本质大致是调用计算机的指令编写一系列任 ...
- Win7 vs2017 WDK 1803 1809 驱动开发 出错 KMDF
一.编译出错, 1. 包含头文件出错 解决方案: 需要下载1803 的wdk 最新的1809会出一堆错误 安装程序显示是10.0.17134.1安装完成后是10.0.17134.0 2. Inf2C ...
- windows环境下命令打到服务中
1.正常redis在本地命令行中启动,现在直接在服务中启动(tomcat同理) cmd下命令如下: sc create redis binPath= D:\redis\redis-server.exe ...
- easyui的tree节点的获取和选中
1.设置选中tree的节点 var node = $('#tt').tree('find', 1);//找到id为”tt“这个树的节点id为”1“的对象$('#tt').tree('select', ...
- MTK USER版本禁止log输出
1.bootable/bootloader/lk/app/mt_boot/mt_boot.c sprintf(cmdline,"%s%s",cmdline," print ...
- Java-IO基础类回忆
好记性不如烂笔头,就拿Java IO来说吧,这部分的基础类我大学都已经学过一遍了,但是现在忘记的差不多了,所以准备写一篇博客,讲这些东西都回忆一下,并且整理一下. 首先借用网上的一张图: 纵向分为字节 ...
- Linux下的搜索查找命令的详解(whereis)
2.whereis 和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据 ...
- phpadmin dvwa sqli-labs xsser.me
下载phpadmin,安装后网站根目录 phpStudy\PHPTutorial\WWW 将下载的dvwa文件夹放到该目录下,修改config/config.inc.php文件中的mysql连接信息. ...
- VMPlayer Ubuntu 16.04 Copy and Paste with Host 主机与宿机之间的复制粘贴
使用Ubuntu的虚拟机时如果不能主机之间进行复制粘粘,会非常非常的不方便,所以我们需要安装vmware tools,使用如下的代码(注意第二句一定要有,不然还是不能复制粘贴): sudo apt-g ...