一.解析的对象

<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<username>小丁</username>
<password>123</password>
</user>
<user id="2">
<username>小彭</username>
<password>123</password>
</user>
</users>

二.解析的方法介绍

  1.DOM(docuement object model)解析

   

    把所有的XML内容读到内存中,形成树状结构。这个树状结构是一个对象,名字叫docuement  

      DOM解析中的一些术语

       Doucment:整个对象(整颗数)

       Element:元素,就是标签,上面的users,user,username,password四个标签

       Attribute:属性,user标签中的id属性

          Text:文本,标签中的内容,上图最下面的叶子节点。

      Node:上面四个都可以叫Node   

      

  2.SAX(simple API for XML)

     SAX一条条读到内存并解析

三.代码实现

  使用dom4j(一个API,封装了我们需要的方法)   

  下载地址 https://dom4j.github.io/

  

  第一种实现 导入dom4j的jar:

package xmlDemo;

import java.io.File;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test; public class UserTest {
@Test
public void DOMTest() {
try {
SAXReader reader = new SAXReader();
// 读取要解析的xml文件
Document document = reader.read(new File("src/User.xml"));
// 获得根元素
Element rootElement = document.getRootElement();
// 获取根元素下的所有子元素
List<Element> elements = rootElement.elements();
for (Element element : elements) {
String username = element.element("username").getText();
String password = element.element("password").getText();
System.out.println("username=" + username + " password=" + password);
} } catch (DocumentException e) {
e.printStackTrace();
}
}
}

结果:

第二种XPath: 导入dom4j jar 包外还需导入

package xmlDemo;

import java.io.File;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test; public class UserTest {
@Test
public void XPathTest() {
try {
SAXReader reader = new SAXReader();
// 读取要解析的xml文件
Document document = reader.read(new File("src/User.xml"));
// 获得根元素
Element rootElement = document.getRootElement();
//选择所有的username元素对象
List<Element> nodes = rootElement.selectNodes("//username");
for (Element element : nodes) {
System.out.println("username="+element.getText());
} } catch (DocumentException e) {
e.printStackTrace();
}
}
}

结果:

使用Java解析XML的更多相关文章

  1. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...

  2. java 解析XML文档

    Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...

  3. Java 解析 XML

    Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...

  4. JAVA解析XML的四种方式

    java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...

  5. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    [目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...

  6. Java解析XML文档(简单实例)——dom解析xml

      一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...

  7. 【Java】详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...

  8. java解析xml的几种方式

    java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...

  9. java解析xml文件并输出

    使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...

  10. 一个java解析xml的简单例子

    java解析xml,主要是通过Dom4j实现的,很多场合都会用到此功能,需要解析XML文件. 下面是一个简单的解析XML文件的例子: import java.util.Iterator; import ...

随机推荐

  1. ESP-IDF版本更新说明(V2.1版)转自github(https://github.com/espressif/esp-idf/releases/)

    ESP-IDF Release v2.1  igrr 发布了这个 on 29 Jul · 自此发布以来,我承诺要 承诺414 自v2.0以来的变化. 突破变化 版本v2.1旨在大大兼容为ESP-IDF ...

  2. 进程控制(Note for apue and csapp)

    1. Introduction We now turn to the process control provided by the UNIX System. This includes the cr ...

  3. java中的io系统详解

    相关读书笔记.心得文章列表 Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字 ...

  4. 机器学习库--dlib

    dlib是什么呢?见面了,总要认识一下吧? dlib其实就是一个跨平台的用C++编写的代码库.这个库的机器学习算法和工具可以用来解决现实世界的很多工程问题. 它在工业界和学术界有着广泛的应用.主要在机 ...

  5. 往github提交代码流程

    一 首先在Github新建一个仓库,回到首页,点击右上角的New repository新建仓库. 二  在本地依次使用下面命令 …or create a new repository on the c ...

  6. CentOS7 linux 中提示 bash: ls: 未找到命令...

    记录一次CentOS7里执行ls命令失败的问题 执行ls命令时报找不到命令,原因是环境变量PATH被修改, 解决办法: 执行    export PATH=/bin:/usr/bin:$PATH 然后 ...

  7. Java运行环境(win10)

    系统安装Java后,配置运行环境,我的系统是win10,之前随便装了,没想到最近执行javac命令报错,(网上找了一堆都没用)处理方式如下: 环境变量-新建:变量名:%JAVA_HOME%  变量值: ...

  8. jvm-class文件简介

    jvm全称 java virtual machine (java虚拟机),也就是在计算机上再虚拟一个计算机,它存在于计算机内存中并运行在操作系统之上的. javap -v class文件名 > ...

  9. [视频]K8飞刀 shellcode loader演示教程

    [视频]K8飞刀 shellcode loader演示教程 https://pan.baidu.com/s/1eQ77lPw

  10. 剑指offer【02】- 替换空格(Java)

    题目:替换空格 考点:字符串 题目描述: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. ...