java dom4j xml标签_[Java学习笔记-018]

本文深入探讨了Java中的XML处理,包括XML的概念、特点、与HTML的区别,以及XML的解析方式如DOM、SAX、JDOM和DOM4J。特别强调了DOM4J的优势和XPath技术在快速获取XML节点中的应用。
摘要由CSDN通过智能技术生成

java基础深化 90. xml概念和体系

1. xml概念

xml 指可扩展标记语言(EXtensible Markup Language)

xml 没有预定义标签,需要自行定义标签

2. xml的特点

1) xml数据以纯文本格式存储

2) 实现不同应用程序之间的数据通信

3) 实现不同平台间的数据通信

4) 实现不同平台间的数据共享

5) 使用xml将不同的程序、不同的平台之间联系起来

3. xml和html

html:预定义标签,主要作用是用来显示数据(显示)

xml:自定义标签,主要作用是数据存储和传输(传输)

4. XML文档的组成

<?xml version="1.0" encoding="UTF-8"?>                <!--文档的声明-->
<books>                                               <!--根元素-->
	<book id = "1001">                            <!--books的子元素book,id叫属性,"1001"是属性值-->
		<name>java开发实战</name>             <!--name、author、price是book的子元素-->
		<author>张小三</author>               <!--java开发、张三、98.5都是文本,字符型-->
		<price>98.5</price>
	</book>
	<book id = "1002">
		<name>mysql从删库到跑路</name>
		<author>王一一</author>
		<price>89.7</price>
	</book>
</books>

5. xml文件的体系

1) XHTML

2) WSDL

3) WAP和WML

4) RSS

5) RDF和OWL

6) SMIL


java基础深化 91. xml基本语法

1. XML的基本语法

1) 有且只有一个根元素

2) XML文档声明必须放在文档的第一行

3) 所有标签必须成对出现

4) XML的标签严格区分大小写

5) XML必须正确嵌套

6) XML中的属性值必须加引号

7) XML中,一些特殊字符需要使用”实体”

8) XML中可以应用适当的注释

2. XML元素

XML元素指的是开始标签到结束标签的部分

一个元素可以包含

1) 其他元素

2) 文本

3) 属性

4) 以上的混合

3. XML命名规则

1) 名称可以包含字母、数字及其他字符

2) 名称不能以数字或者标点符号开始

3) 名称不能以字母xml开始

4) 名称不能包含空格


java基础深化 92. Schema技术介绍

1. DTD验证

概念:DTD文档类型定义

作用:验证是否是“有效”的XML

2. DTD的局限性

1) DTD不遵守XML语法

2) DTD数据类型有限

3) DTD不可扩展

4) DTD不支持命名空间

3. Schema技术

Schema是DTD的代替者,名称为XML Schema,用于描述XML文档结构,比DTD更加强大,最主要的特征之一就是XML Schema支持数据类型。

4. Schema的文档结构

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ></xs:schema>
<!--所有的Schema文档使用schema作为其根元素
http://www.w3.org/2001/XMLSchema:用于验证当前Schema文档的命名空间(用于验证Schema本身)
同时它还规定了来自命名空间http://www.w3.org/2001/XMLSchema的元素和数据类型应该使用前缀xs:-->

5. 使用Schema验证XML文档的步骤

0ee9e50d7c6acc1ea41f1b9e7eaf4c4f.png
1. 编写schema文档:

75ca913d76cfecf9e4ff4b2a3d834ee1.png
2. 将schema文档引入到XML文档中:

5a981a057f3668f8da532eb51868b18d.png
3. 编写类测试验证XML文档是否正确

java基础深化 93 .DOM方式解析XML数据

在Java程序中读取XML文件的过程称为解析XML

1. 解析XML文件的方式

1) DOM解析(java官方提供)

2) SAX解析(java官方提供)

3) JDOM解析(第三方提供)

4) DOM4J解析(第三方提供)

2. DOM解析XML的步骤

1) 创建一个DocumentBuilderFactory的对象

2) 创建一个DocumentBuilder对象

3) 通过DocumentBuilder的parse(...)方法得到Document对象

4) 通过getElementsByTagName(...)方法获取到节点的列表

5) 通过for循环遍历每一个节点

6) 得到每个节点的属性和属性值

7) 得到每个节点的节点名和节点值

package test.main;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class TestDOMParse {
	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
//		1)创建一个DocumentBuilderFactory的对象
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//		2)创建一个DocumentBuilder对象
		DocumentBuilder db = dbf.newDocumentBuilder();
//		3)通过DocumentBuilder的parse(...)方法得到Document对象
		Document doc = db.parse("book.xml");
//		4)通过getElementsByTagName(...)方法获取到节点的列表
		NodeList bookList = doc.getElementsByTagName("book");
//		System.out.println(bookList.getLength());
//		5)通过for循环遍历每一个节点
		for(int i=0;i<bookList.getLength();i++){
			//6)得到每个节点的属性和属性值
			Node book = bookList.item(i);
			NamedNodeMap attrs = book.getAttributes();//得到了属性的集合
			//循环遍历每一个属性
			for (int j = 0; j < attrs.getLength(); j++) {
				//得到每一个属性
				Node id = attrs.item(j);
				System.out.println("属性的名称:"+id.getNodeName()+"t"+id.getNodeValue());
				
			}
		}
		System.out.println("n每个节点的名和节点的值");
//		7)得到每个节点的节点名和节点值
		for(int i=0;i<bookList.getLength();i++){
			//得到每一个book节点
			Node book =bookList.item(i);
			NodeList subNode=book.getChildNodes();
			//使用for循环遍历每一book的子节点
			for (int j = 0; j < subNode.getLength(); j++) {
				Node childNode=subNode.item(j);
//				System.out.println(childNode.getNodeName());
				short type = childNode.getNodeType();
				if(type==Node.ELEMENT_NODE)
					System.out.println("节点的名称:"+childNode.getNodeName()+"t"+childNode.getTextContent());
			}
		}
	}
} 

java基础深化 94. SAX方式解析XML数据

1. SAX的概述

SAX, 全称Simple API for XML, 是一种以事件驱动的XML API, SAX与DOM不同的是它边扫描边解析, 自顶向下依次解析,由于边扫描边解析, 所以它解析XML具有速度快, 占用内存少的优点。

2. SAX解析XML的步骤

64fdcc0cd92fb6c8a1eb678a5a965e14.png

3132f1fbbfb8d5223707d45e7bda36cc.png
BookDefaultHander重写DefaultHandler中的startDocument()和endDocument()方法

7f3c609b4e805a94542df846b443b854.png
BookDefaultHander中的startElement方法

48031476d3a2dc64de8a129ee7deeeb6.png
BookDefaultHander中的endElement方法和chararters方法

e0e6ce7747db7ea8c37e670b294ac2a9.png

java基础深化 95. JDOM解析XML数据

1. JDOM概述

JDOM是一种解析XML的java工具包,它基于树型结构,利用纯Java的技术对XML文档实现解析。所以只适合于Java语言。

2. JDOM解析XML的步骤

d59d137b92f50384549df221a19fe31f.png

01c2b2e90d8dff4b2dc77ffaee261e50.png

java基础深化 96. DOM4J解析XML数据

DOM4J是现在比较流行和使用最多的方式,是一个Java的XML API,是JDOM的升级品,用来读写XML文件的,只适合于Java语言。

1. DOM4J解析XML

b5804f0af965d655b9bb0c4f246533ee.png

202eb1d24fb9b625b8d1f03018b8f5c6.png

482e93806e175ed6ed5675e6eeb9fa03.png
输出结果

2. 四种解析XML技术的特点

1) DOM解析:

形成了树结构,有助于更好的理解、掌握,且修改代码容易编写。解析过程中,树结构保存在内存中,方便修改。

2) SAX解析:

采用事件驱动模式,对内存耗费比较小。适用于只处理XML文件中的数据

3) JDOM解析:

仅使用具体类,而不使用接口。API大量使用了Collection类

4) DOM4J解析:

JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。


java基础深化 97. XPATH技术快速获取节点

XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。

准备资源

  • DOM4J的jar包
  • Jaxn的jar包
  • Xpath中文文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值