我是靠谱客的博主 着急棒球,最近开发中收集的这篇文章主要介绍xml复习笔记:xml、xml的解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

XML

一、XML概念和作用

1.XML概念

XML的全称为(eXtensible Markup Language),是一种可扩展的标记语言。

  • 标记语言:通过标签来描述数据的一门语言
  • 可扩展:标签的名字是可以自定义的
<person id=“1” color=“yellow”>
<name>武松</name>
<age>18</age>
<email>panpan@163.com</email>
</person>
  • XML的作用(存储和传输数据)
    • 不同软件之间进行数据传输。
    • 各种框架的配置文件。
2.XML组成
  • XML文件的后缀名为:xml
  • 文档声明必须是XML第一行
<?xml version="1.0" encoding="UTF-8" ?>
version:版本号,该属性是必须存在的
encoding:文件编码,该属性不是必须的(一般取值都是UTF-8)
  • 文档声明的作用
    告诉别人这个一个XML文件

  • XML组成-标签和属性

    • 标签由一对尖括号和合法标识符组成
    • 标签必须成对出现(开始标签和结束标签)
    • 没有内容的标签可以提前结束,如<address/>
    • 标签中可以定义属性,属性和标签名空格隔开<student id="1"></student>
    • 属性值必须用引号引起来
  • 标签需要正确的嵌套

在这里插入图片描述

  • XML组成-根标签
    • 没有被其他标签包裹的就称为根标签
    • 在一个XML文档中,只允许有一个根标签

在这里插入图片描述

  • XML组成-注释

    • 注释语法格式:
    • 注释作用: 给程序员看的
    • 快捷键:ctrl + /
    • 嵌套:在XML中注释不能嵌套
  • XML组成-实体字符/转义字符

因为很多符号已经被XML所使用,所以在元素体或属性值中想使用这些符号就必须使用实体字符

  • 规律所有的实体字符都是以&开头, 以;结尾
    &xxx

在这里插入图片描述

  • XML组成-字符数据区

    • 如果大量使用实体字符,会导致XML可读性降低。另一种解决方案:可以使用字符数据区包裹这些字符。image-20210905234137344在这里插入图片描述

    • CDATA字符数据区的作用

      ​ 放在CDATA字符数据区中的数据,作为纯文本解析,原样显示。

      在这里插入图片描述

    • 快捷键:CD

3.小结:

XML的组成格式要求是什么样的:

  • 文件后缀必须是xml
  • 文档声明必须是第一行
  • 必须存在一个根标签,有且只能有一个
  • XML文件中可以定义注释信息:
  • 标签必须成对出现,有开始,有结束标签: <name></name>
  • 必须能够正确的嵌套

二、导入DTD约束

1.XML约束介绍

因为XML文件的标签和属性可以随意扩展,通过XML约束来限定XML文件中可使用的标签以及属性。

在这里插入图片描述

2.XML的两种约束

  • DTD约束,比较简单,功能相对弱
  • Schema,比较复杂,功能相对强

在企业实际开发中,DTD约束文档是现成的,我们只需引入DTD约束文档,编写出相应的XML文档。

导入DTD文件的两种格式说明
<!DOCTYPE根元素SYSTEM "DTD文件路径">`本地的约束,适合个人,公司小范围的使用的约束
<!DOCTYPE根元素 PUBLIC "文件描述" "DTD文件路径">网络上的约束,适合大范围的使用

在这里插入图片描述

在这里插入图片描述

3.DTD的不足

  • 不能验证数据类型
  • 因为DTD是一个文本文件,本身不能验证是否正确。

4.Schema约束介绍

  • Schema 功能更强大,数据类型约束更完善
  • Schema文件本身也是XML文件
  • 一个XML中可以引用多个Schema约束文件
  • Schema约束文件扩展名:xsd
  • Schema约束导入格式
<根标签
xmlns="命名空间"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="命名空间 schema约束文件名">
<!-- 编写XML元素 -->
</根标签>
  • Schema命名空间查看

在这里插入图片描述

在这里插入图片描述
image-20210905235242418

三、XML解析介绍

  • 什么是XML的解析: 使用程序读取XML中的数据

  • 两种解析方式:SAX解析 ,DOM解析

在这里插入图片描述

  • DOM解析原理

一次性读取XML中的所有数据,在内存中形成一颗DOM树

在这里插入图片描述

  • 常见的解析工具介绍

使用Java基础所学的IO知识是可以完成XML解析的,不过要非常繁琐的操作才可以完成,且开发中会遇到不同问题(只读、读写)。人们为不同问题提供不同的解析方式,使用不同的解析器进行解析,方便开发人员操作XML。

名称说明
JAXPSUN公司提供的一套XML的解析的API。
JDOMJDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。
dom4j是JDOM的升级品,用来读写XML文件的。具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom 技术,同时它也是一个开放源代码的软件,Hibernate也用它来读写配置文件。
jsoup功能强大DOM方式的XML解析开发包,尤其对HTML解析更加方便。
1.Dom4j解析XML-得到Document对象
  • SAXReader对象
方法名说明
SAXReader()创建解析器
Document read(String url)加载执行XML文档
  • Document对象
方法名说明
Element getRootElement()获得根元素
2.Element介绍

Element表示XML中的元素对象

方法名说明
List elements()得到当前元素下所有子元素
List elements(String name)得到当前元素下指定名字的子元素返回集合
Element element(String name)得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个
String getName()得到元素名字
String attributeValue(String name)通过属性名直接得到属性值
String elementText(子元素名)得到指定名称的子元素的文本
String getText()得到文本
3.XPath介绍

XPath使用路径表达式来选取XML文档中的元素节点或属性节点。节点是通过沿着路径 (path) 来选取的。XPath在
解析XML文档方面提供了一独树一帜的路径思想。

/元素/子元素/孙元素

  • XPath使用步骤

    ①导入jar包(dom4j和jaxen-1.1.2.jar)
    ②通过dom4j的SAXReader获取Document对象

    ③利用XPath提供的API,结合XPath的语法完成选取XML文档元素节点进行解析操作。

  • Document中和XPath相关API

方法名说明
Node selectSingleNode(“表达式”)获取符合表达式的唯一元素
List selectNodes(“表达式”)获取符合表达式的元素集合
  • XPath:绝对路径

采用绝对路径获取从根节点开始逐层的查找/contactList/contact/name节点列表并打印信息

  1. 解析 XML 文档并获得Document对象
  2. 定义 XPath 表达式:/contactList/contact/name
  3. 调用Document对象的selectNodes()方法执行XPath获得节点集合
  4. 遍历输出每个节点
方法名说明
/根元素/子元素/孙元素从根元素开始,一级一级向下查找,不能跨级
  • XPath:相对路径
    1. 获得根节点对象
    2. 定义 XPath 表达式:./contact/name
    3. 调用Document对象的selectNodes()方法执行XPath获得节点
    4. 打印输出所有的节点
方法名说明
./子元素/孙元素从当前元素开始,一级一级向下查找,不能跨级
  • XPath:全文搜索

需求: 直接全文搜索所有的name元素并打印

  1. 创建XPath表达式 //name
  2. 调用Document对象的selectNodes()方法执行XPath获得节点
方法名说明
//contact找contact元素,无论元素在哪里
//contact/name找contact,无论在哪一级,但name一定是contact的子节点
//contact//namecontact无论在哪一种,name只要是contact的子孙元素都可以找到
  • XPath:属性查找
    1. 创建XPath表达式: //@id
    2. 调用Document对象的selectNodes()方法执行XPath获得节点
    3. **创建XPath表达式: //contact[@id] **
    4. 调用Document对象的selectNodes()方法执行XPath获得节点
方法名说明
//@属性名查找属性对象,无论是哪个元素,只要有这个属性即可。
//元素[@属性名]查找元素对象,全文搜索指定元素名和属性名。
//元素[@属性名=‘值’]查找元素对象,全文搜索指定元素名和属性名,并且属性值相等。

最后

以上就是着急棒球为你收集整理的xml复习笔记:xml、xml的解析的全部内容,希望文章能够帮你解决xml复习笔记:xml、xml的解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部