1.XML概念:Extensible Markup Language 可扩展标记语言

可扩展:标签都是自定义的。 <user> <student>

功能
  * 存储数据
    1. 配置文件
    2. 在网络中传输
xml与html的区别
  (1) xml标签都是自定义的,html标签是预定义。
  (2)xml的语法严格,html语法松散
  (3)xml是存储数据的,html是展示数据

2.XML 语法:
(1)基本语法:
  1. xml文档的后缀名 .xml
  2. xml第一行必须定义为文档声明
  3. xml文档中有且仅有一个根标签
  4. 属性值必须使用引号(单双都可)引起来
  5. 标签必须正确关闭
  6. xml标签名称区分大小写
(2)组成部分:
<1>文档声明
  1. 格式:<?xml 属性列表 ?>
  2. 属性列表:
    * version:版本号,必须的属性
    * encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
    * standalone:是否独立
  * 取值:
    * yes:不依赖其他文件
    * no:依赖其他文件
<2>指令(了解):结合css的
* <?xml-stylesheet type="text/css" href="a.css" ?>
<3>标签:标签名称自定义的
  规则:
    * 名称可以包含字母、数字以及其他的字符
    * 名称不能以数字或者标点符号开始
    * 名称不能以字母 xml(或者 XML、Xml 等等)开始
    * 名称不能包含空格

<4>属性:
id属性值唯一
<5>文本:
CDATA区:在该区域中的数据会被原样展示
格式: <![CDATA[ 数据 ]]>

3.约束:规定xml文档的书写规则
(1)作为框架的使用者(程序员):
  <1>能够在xml中引入约束文档
  <2>能够简单的读懂约束文档

(2)分类:
(1)DTD:一种简单的约束技术
(2)Schema:一种复杂的约束技术

(3) 解析:操作xml文档,将文档中的数据读取到内存中
操作xml文档
  1. 解析(读取):将文档中的数据读取到内存中
  2. 写入:将内存中的数据保存到xml文档中。持久化的存储

解析xml的方式:
  1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
    * 优点:操作方便,可以对文档进行CRUD的所有操作
    * 缺点:占内存
  2. SAX:逐行读取,基于事件驱动的。
    * 优点:不占内存。
    * 缺点:只能读取,不能增删改

xml常见的解析器:
  1. JAXP:sun公司提供的解析器,支持dom和sax两种思想
  2. DOM4J:一款非常优秀的解析器
  3. Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
  4. PULL:Android操作系统内置的解析器,sax方式的。

Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

Jsoup 快速入门:
步骤:
  1. 导入jar包
  2. 获取Document对象
  3. 获取对应的标签Element对象
  4. 获取数据

案例:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import java.io.File;
import java.io.IOException; /**
* Json快速入门
*/
public class JSoupDemo1 {
public static void main(String[] args) throws IOException {
//1.获取document对象,根据xml文档
//1.1获取student.xml的path
String path = JSoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//1.2 解析xml文档,加载进内存,获取dom
Document document = Jsoup.parse(new File(path), "utf-8");
//2.获取元素对象
Elements elements = document.getElementsByTag("name");
System.out.println(elements.size());
//2.1获取第一个name的element对象
Element element = elements.get(0);
String name = element.text();
System.out.println(name); }
}

控制台输出:

对象的使用:
(1)Jsoup工具类,可以解析html或xml文档,返回Document
  * parse:解析html或xml文档,返回Document
  * parse​(File in, String charsetName):解析xml或html文件的。
  * parse​(String html):解析xml或html字符串
  * parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
(2) Document:文档对象。代表内存中的dom树
* 获取Element对象
  * getElementById​(String id):根据id属性值获取唯一的element对象
  * getElementsByTag​(String tagName):根据标签名称获取元素对象集合
  * getElementsByAttribute​(String key):根据属性名称获取元素对象集合
  * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合
(3) Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
(4)Element:元素对象
  1. 获取子元素对象
    * getElementById​(String id):根据id属性值获取唯一的element对象
    * getElementsByTag​(String tagName):根据标签名称获取元素对象集合
    * getElementsByAttribute​(String key):根据属性名称获取元素对象集合
    * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

  2. 获取属性值
    * String attr(String key):根据属性名称获取属性值
  3. 获取文本内容
    * String text():获取文本内容
    * String html():获取标签体的所有内容(包括字标签的字符串内容)
(5)Node:节点对象
* 是Document和Element的父类

07 XML知识点--学习笔记的更多相关文章

  1. PHP操作XML文件学习笔记

    原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...

  2. Java后端高频知识点学习笔记1---Java基础

    Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...

  3. xml基础学习笔记04

    今天继续xml学习,主要是:SimpleXML快速解析文档.xml与数组相互转换 .博客中只是简单的做一个学习记录.积累.更加详细的使用方法,可以查看php手册 1.SimpleXML快速解析文档 前 ...

  4. xml基础学习笔记05

    Xpath快速解析 如题一样,本篇主要说说Xpath快速查找XML文档   * Xpatn.Xquery,是专门用来查询xml的语言   * 查询xml非常快   Xpatn.Xquery,是专门用来 ...

  5. xml基础学习笔记03

    继续上篇xml学习笔记,坚持.坚持.再坚持啊.... 本篇主要记录: 35.XML节点的删除与修改 36集.用XML制作RSS订阅源 <?php /* 笔记: 35.XML节点的删除与修改 使用 ...

  6. xml基础学习笔记01

    注意:刚刚看了网上对于XML中的标签,节点和元素?到底应该怎么表述?起初我也有这个疑惑,现在我的想法是:下面出现node的应称作节点,节点对象.element应称作元素,毕竟这更符合英文的本意.至于标 ...

  7. xml基础学习笔记02

    接着上次的xml笔记01 ,记录一下如何DOM创建xml 一.由于没有特意来写博客,都是在程序中用注释的方法记录笔记,整理过来难免格式错误,排版什么的,大家好事看不懂就仔细看给出的代码加上注释,一定会 ...

  8. Struts2知识点学习笔记

    写给自己的话 好记性不如烂笔头,不可能说看了一遍视频就可以完全掌握的.留下这篇笔记,便于今后的复习吧. 1. 访问ServletAPI 访问ServletAPI(response,request,)的 ...

  9. xml增强学习笔记

    2 Dom4j修改xml文档 2.1 写出内容到xml文档 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt) wirter.wr ...

随机推荐

  1. 3.Vue 实例

    创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模型,但是 V ...

  2. 2019.12.07 java基础

    编译时报错,叫做编译失败 class Demo01 { public static void main(String[] args) { int a; a=12; System.out.println ...

  3. nuxt如何处理用户登录状态持久化:nuxtServerInit 页面渲染前的store处理

    vue-cli项目中,我们可以用vuex-persistedstate,它可以使vuex的状态持久化,页面刷新都不会丢失,原理当然是localStorage啦!当然也可以使用vue-cookies进行 ...

  4. 微信小程序知识云开发

    一个小程序最多5个服务类目,一个月可以修改3次类目 小程序侵权投诉的发起与应对 软件著作权作品登记证书 实现小程序支付功能 如何借助官方支付api简单.高效率地实现小程序支付功能 借助小程序云开发实现 ...

  5. Exception in thread "main" java.lang.IllegalStateException: Failed to read 问题解决

    开发中偶尔遇到这样的问题:Exception in thread "main" java.lang.IllegalStateException: Failed to read .. ...

  6. Spark-Streaming kafka count 案例

    Streaming 统计来自 kafka 的数据,这里涉及到的比较,kafka 的数据是使用从 flume 获取到的,这里相当于一个小的案例. 1. 启动 kafka Spark-Streaming ...

  7. mysql 字符类以及重复元字符

    字符类 [:alnum:]=[a-zA-Z0-] [:alpha:]=[a-zA-Z] [:digit:]=[-] [:lower:]=[a-z] [:upper:]=[A-Z] [:xdigit:] ...

  8. 「HNOI2016」序列

    传送门 Description 有 \(q\) 个询问,每个询问给定两个数\(l\) 和\(r\),求 \(a[l:r]\) 的不同子序列的最小值之和 Solution  校内模拟赛用了这道题,但是莫 ...

  9. Alibaba Nacos:搭建Nacos平台

    1.下载安装包 https://github.com/alibaba/nacos/releases 往下翻,找到压缩包下载. 2.解压 tar -xvf nacos-server-$version.t ...

  10. 配置nRF52832 的NFC 专用引脚为 GPIO

    nRF52832 是支持NFC的,真可惜本码农没用过. NFC的引脚为 P0.09/P0.10,这两个引脚正常情况下是不能直接当做GPIO来用的,要用的时候,需要在编译环境配置一个宏. 下面是Keil ...