XML为可扩展标记语言,它主要是用来保存数据,做配置文件,数据传输载体等。其实就是一个后缀名为.xml的文件。

XML命名规则

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符 “xml”(或者 XML、Xml)开始
  • 名称不能包含空格

文档声明

例如此声明:<?xml version="1.0" encoding="gbk" standalone="no" ?>

(1)version : 解析这个xml的时候,使用什么版本的解析器解析

(2)encoding : 解析xml中的文字的时候,使用什么编码来翻译

(3)standalone:no - 该文档会依赖关联其他文档 ,  yes-- 这是一个独立的文档

注意:保存XML文件使用的编码格式与encoding定义的编码格式需一致,否则显示中文时会发生乱码,推荐使用UTF-8编码格式保存文档。

文档结构说明

根元素(rootElement):文档声明下来的第一个元素;

子元素(Element):除根元素的其他元素;

属性(Attribute)的定义:定义在元素里面, <元素名称 属性名称="属性的值"></元素名称>。

 <?xml version="1.0" encoding="UTF-8"?>
<students>
<fristStu id="firstName">
<name>张三</name>
<age>20</age>
<address>北京海淀</address>
</fristStu>
<secondStu id="secondName">
<name>Toma</name>
<age>20</age>
<address>湖北武汉</address>
</secondStu>
</students>

XML解析

获取元素里面的字符数据或者属性数据。XML解析方式有多种,常用的有两种:

  • DOM:可对文档进行增删操作,读取整个文档至内存中,XML过大,内存溢出;
  • SAX:读取一行,解析一行,不会造成内存溢出,但不可以增删操作,只能查询;
  • 最常用的解析方案为dom4j。

使用dom4j解析XML

  1. 创建SAXReader对象;

  2. 指定解析的XML;

  3. 获取根元素;

  4. 根据根元素获取子元素或者下面的子孙元素。

注意:在进行解析之前,需要导入dom4j的jar包,以eclipse为例:右击项目名称—>Build Path—>Configure Build Path....—>点击右侧的Add External JARs...—>选择下载好的dom4j的jar包—>Apply and Close。

java代码如下:

 package com.reedeek.dom4j;

 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; public class dom4j_XML { public static void main(String[] args) {
/**
* XML解析方式有多种,常用的有两种:
* 1、DOM:可对文档进行增删操作,读取整个文档至内存中,XML过大,内存溢出;
* 2、SAX:读取一行,解析一行,不会造成内存溢出,但不可以增删操作,只能查询。
* 3、最常用的解析方案为dom4j;
*
*/
try {
// 创建SAXReader对象
SAXReader sax = new SAXReader();
// 指定解析的xml文件地址
Document document = sax.read(new File("src/xml/students.xml"));
// 获取根元素
Element rootElement=document.getRootElement();
// 获取子元素集
List<Element> elements=rootElement.elements();
for(Element element:elements) {
System.out.print(element.getName()+": ");
String name=element.element("name").getText();
String age=element.element("age").getText();
String address=element.element("address").getText();
System.out.println(name+" "+age+" "+address);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

运行测试结果:

XML文档的解析—dom4j的更多相关文章

  1. javaweb学习总结十三(dom4j方式对XML文档进行解析以及Xpath的使用)

    一:dom4j方式介绍 对于xml的解析总共有三种 1:jaxp方式,是sun公司开发的,分为sax方式和dom方式 2:jdom方式,后来其中部分人员参与开发dom4j 3:dom4j方式,是现在企 ...

  2. DOM生成XML文档与解析XML文档(JUNIT测试)

    package cn.liuning.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.D ...

  3. Java开发知识之XML文档使用,解析

    目录 XML文件详解 一丶XML简介 1.文档结构 2.XML中的元素(Element)或者叫做标签(Tab).属性 文本内容. 节点(Node) 3.XML语法规则 二丶XML文档解析 三丶使用XP ...

  4. Java解析XML文档——dom解析xml

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

  5. QT XML文档的解析 QXmlStreamReader, DOM,SAX 三种解析方法 简单示例

    0. xml文档如下 <?xml version="1.0"?> <bookindex> <entry term="sidebearings ...

  6. xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil

    若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...

  7. c# 创建XML文档,解析XML文档

    1.静态函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...

  8. web api .net C# mvc API返回XML文档的解析并取值

    [HttpGet] public System.Net.Http.HttpResponseMessage GetNotify() { var xmlstring = @" <xml&g ...

  9. dom4j解析xml文档全面介绍

    一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...

随机推荐

  1. 微信小程序转发商品的详情页 + 转发功能(传参)

    1.微信小程序转发传参,利用的还是onShareAppMessageapi 2.利用的还有json转换 JSON 是用于存储和传输数据的格式. JSON 通常用于服务端向网页传递数据 函数 描述JSO ...

  2. 微信小程序下可以使用的MD5以及AES加密(通用)

    两段代码都来自网络 ,在小程序下的加解密结果与CS/BS等算出的结果都一致,支持汉字. 一.MD5: var rotateLeft = function (lValue, iShiftBits) { ...

  3. Linux下查找命令

    在CentOs下查找某个目录下的某个文件,使用如下指令: find /目录 -name 文件名 eg:查找当前目录下关于hadoop的文件 find / -name hadoop

  4. windows环境下ElasticSearch5以上版本安装head插件

    我的ElasticSearch版本是5以上的,网上搜了好多安装方式,都不对. 还好找到一个成功的,转载过来做记录. 原文地址:ElasticSearch-5.0安装head插件 步骤 下载node.j ...

  5. 快速搭建微信小程序开发环境

    1.工具软件: 注:本文介绍的工具软件已分享到百度云盘,直接下载并按照本文介绍安装即可. 开发工具 v0.7 百度云链接: https://pan.baidu.com/s/1jIQ7i8A密码: aq ...

  6. C语言多线程编程二

    一. 线程通信----事件: 1.一对一模式: #include <stdio.h> #include <stdlib.h> #include <Windows.h> ...

  7. python random 之基础点名器

    import os ,sysimport randomcalled =set() # 创建一个空集合f =open('name.txt ' , 'r')#打开文件读取名字data =f.read()# ...

  8. leetcode-78-子集(用bfs解决)

    题目描述: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3],   [1] ...

  9. 语言模型预训练方法(ELMo、GPT和BERT)——自然语言处理(NLP)

    1. 引言 在介绍论文之前,我将先简单介绍一些相关背景知识.首先是语言模型(Language Model),语言模型简单来说就是一串词序列的概率分布.具体来说,语言模型的作用是为一个长度为m的文本确定 ...

  10. mysql grant权限总结

    2019-01-07 转自 https://blog.csdn.net/wulantian/article/details/38230635 一.权限表 mysql数据库中的3个权限表:user .d ...