【精选】XML技术知识点合计

XML概述

在这里插入图片描述

概念

XML(Extensible Markup Language):可扩展标记语言

可扩展:标签都是自定义的。

发展历程

HTML和XML都是W3C(万维网联盟)制定的标准,最开始HTML的语法过于松散,于是W3C制定了更严格的XML语法标准,希望能取代HTML。但是程序员和浏览器厂商并不喜欢使用XML,于是现在的XML更多的用于配置文件传输数据等功能。

是谁造成的HTML语法松散?

浏览器厂商。最开始W3C制定HTML的时候语法还是比较严格的。但浏览器厂商为了抢占市场,语法错误也可以解析成功HTML,最后“内卷”到HTML即使语法非常混乱也是可以被浏览器解析。

image-20220528165807275

tips:归根到底是语法的制定者使用者不一致造成了HTML语法混乱,JAVA语法严格就是因为java语言的运行工具java虚拟机也是sun公司(现在是oracle)出品的,语法不通过不让运行。

为什么程序员不使用XML写前端页面?

因为程序员松散惯了,不想写很严格的代码。同样挣一万块钱,谁会从每月上一天班的公司跳槽到996的公司呢?

XML的功能

  1. 配置文件:在今后的开发过程当中我们会频繁使用框架(框架:半成品软件),使用框架时,需要写配置文件配置相关的参数,让框架满足我们的开发需求。而我们写的配置文件中就有一种文件类型是XML。

    日后编写大型项目,不可能从头到尾都是原创代码,很多功能前人已经写好,我们只需要使用前人写好的半成品软件(框架),再加入一些符合我们需求的配置即可完成开发。

  2. 传输数据:在网络中传输数据时并不能传输java对象,所以我们需要将JAVA对象转成字符串传输,其中一种方式就是将对象转为XML类型的字符串。

    比如携程等旅游网站可以买火车票,但他们其实也是替12306卖票,此时他们就需要拿到12306的票务数据。JAVA对象不能在网络上传输,可以转为XML类型的字符串。

XML和HTML的区别

  1. XML语法严格,HTML语法松散
  2. XML标签自定义,HTML标签预定义

XML基本语法

  • 文件后缀名是.xml
  • 第一行必须是文档声明
  • 有且仅有一个根标签
  • 标签必须正确关闭
  • 标签名区分大小写
  • 属性值必须用引号(单双都可)引起来

XML组成部分

在这里插入图片描述

文档声明

文档声明必须放在第一行,格式为:

<?xml 属性列表 ?>

属性列表:

  • version:版本号(必须)
  • encoding:编码方式

标签

XML中标签名是自定义的,标签名有以下要求:

  • 包含数字、字母、其他字符
  • 不能以数字和标点符号开头,可以以_开头
  • 不能包含空格

指令(了解)

指令是结合css使用的,但现在XML一般不结合CSS,语法为:

<?xml-stylesheet type="text/css" href="a.css" ?>

属性

属性值必须用引号(单双都可)引起来

文本

如果想原样展示文本,需要设置CDATA区,格式为:

<![CDATA[文本]]>

约束

DTD约束

​ 虽然XML标签是自定义的。但是作为配置文件时,也需要遵循一定的规则。就比如在主板上硬盘口只能插硬盘,不能插入其他硬件。约束就是定义XML书写规则的文件,约束我们按照框架的要求编写配置文件。

我们作为框架的使用者,不需要会写约束文件,只要能够在xml中引入约束文档,简单的读懂约束文档即可。XML有两种约束文件类型:DTD和Schema。

DTD是一种较简单的约束技术,引入方式如下:

  • 本地引入:

    <!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
    
  • 网络引入:

    <!DOCTYPE 根标签名 PUBLIC "dtd文件的位置" "dtd文件路径">
    

student.dtd

	<!ELEMENT students (student*) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>

student.xml

<?xml version="1.0" ?>
<!DOCTYPE students SYSTEM "student.dtd">
<students><student number="bz001"><name>javaBoy</name><age>10</age><sex></sex></student>
</students>

Schema约束

Schema比DTD对XML的约束更加详细,引入方式如下:

  1. 写xml文档的根标签

  2. 引入xsi前缀:确定Schema文件的版本。

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
  3. 引入Schema文件

    xsi:schemaLocation="Schema文件定义的命名空间 Schema文件的具体路径"
    
  4. 为Schema约束的标签声明前缀

    xmlns:前缀="Schema文件定义的命名空间"
    

Jsoup解析器

在这里插入图片描述

XML解析思想

XML解析即读写XML文档中的数据。框架的开发者通过XML解析读取框架使用者配置的参数信息,开发者也可以通过XML解析读取网络传来的数据。XML有如下解析思想:

DOM解析思想

将标记语言文档一次性加载进内存,在内存中形成一颗dom树

  • 优点:操作方便,可以对文档进行CRUD的所有操作
  • 缺点:占内存
SAX解析思想

逐行读取,基于事件驱动的。

  • 优点:不占内存,一般用于手机APP开发中读取XML
  • 缺点:只能读取,不能增删改

XML常见解析器

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

Jsoup快速入门

xml1

步骤:

  1. 导入jar包
  2. 加载XML文档进内存,获取DOM树对象Document
  3. 获取对应的标签Element对象
  4. 获取数据
public class Demo1 {// 获取XML中所有学生的姓名public static void main(String[] args) throws IOException {// 2.加载XML文档进内存。获取DOM树对象Document// 2.1 获取类加载器ClassLoader classLoader = Demo1.class.getClassLoader();// 2.2使用类加载器,找到XML文档的路径String path = classLoader.getResource("com/java/xsd/student.xml").getPath();// 2.3加载XML文档进内存,并转成Document对象Document document = Jsoup.parse(new File(path), "utf-8");// 3.获取对应的标签Element对象Elements name = document.getElementsByTag("name");// 4.获取数据for (Element element : name) {String text = element.text();System.out.println(text);}}
}

Jsoup对象

在这里插入图片描述

Jsoup:可以解析xml或html,形成dom树对象。

常用方法:

  • static Document parse(File in, String charsetName):解析本地文件
  • static Document parse(String html):解析html或xml字符串
  • static Document parse(URL url, int timeoutMillis):解析网页源文件
public class Demo2 {// Jsouppublic static void main(String[] args) throws IOException {// 解析本地XMLString path = Demo2.class.getClassLoader().getResource("com/java/xsd/student.xml").getPath();Document document = Jsoup.parse(new File(path), "utf-8");System.out.println(document);System.out.println("------------------");// 解析网络资源Document document2 = Jsoup.parse(new URL("https://www.baidu.com"), 2000);System.out.println(document2);}
}

Document对象

在这里插入图片描述

Document:xml的dom树对象

常用方法:

  • Element getElementById(String id):根据id获取元素
  • Elements getElementsByTag(String tagName):根据标签名获取元素
  • Elements getElementsByAttribute(String key):根据属性获取元素
  • Elements getElementsByAttributeValue(String key,String value):根据属性名=属性值获取元素。
  • Elements select(Sting cssQuery):根据选择器选取元素。

Element对象

在这里插入图片描述

Element: 元素对象

常用方法:

  • String text():获取元素包含的纯文本。
  • String html():获取元素包含的带标签的文本。
  • String attr(String attributeKey):获取元素的属性值。

XPath解析

在这里插入图片描述

XPath即为XML路径语言,它是一种用来确定标记语言文档中某部分位置的语言。

使用方法:

  1. 导入Xpath的jar包
  2. 获取Document对象
  3. Document对象转为JXDocument对象
  4. JXDocument调用selN(String xpath),获取List<JXNode>对象。
  5. 遍历List<JXNode>,调用JXNodegetElement(),转为Element对象。
  6. 处理Element对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业要满足什么条件才能实施CRM系统?

CRM的作用相信大家也所有了解&#xff0c;但并不是所有的企业都适合实施CRM。或者说&#xff0c;大部分企业实施CRM并不会100%的成功。那么&#xff0c;企业实施CRM的条件是什么&#xff1f;下面我们就来说一说。 1、业务规模 如果您的客户数量较少&#xff0c;没有复杂的客户…

二分查找——34. 在排序数组中查找元素的第一个和最后一个位置

文章目录 1. 题目2. 算法原理2.1 暴力解法2.2 二分查找左端点查找右端点查找 3. 代码实现4. 二分模板 1. 题目 题目链接&#xff1a;34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣&#xff08;LeetCode&#xff09; 给你一个按照非递减顺序排列的整数数组 nums&#…

苹果手机数据迁移,简单方法送给大家!

当我们准备更换新的苹果手机时&#xff0c;最令人头疼的问题就是如何将旧手机的数据迁移到新手机上。无论是什么手机&#xff0c;数据迁移确实是一个比较繁琐的过程。 但是&#xff0c;只要我们掌握了正确的方法&#xff0c;那么这个过程就会变得简单许多。苹果手机数据迁移的…

护眼灯亮度多少合适?亮度适合学生的护眼台灯推荐

护眼灯亮度满足国AA级标准就好了。可以肯定的是&#xff0c;护眼灯一般可以达到护眼的效果。 看书和写字时&#xff0c;光线应适度&#xff0c;不宜过强或过暗&#xff0c;护眼灯光线较柔和&#xff0c;通常并不刺眼&#xff0c;眼球容易适应&#xff0c;可以防止光线过强或过…

数据质量校验

1.事实表包含昨日数据 2.昨日同比趋势分析 圆通业务量较为平稳 &#xff0c;每日数据量和昨日比差距不足20%&#xff0c;会做数据量的昨日环比差距分析

Camtasia2024免费版mac电脑录屏软件

作为一个互联网人&#xff0c;没少在录屏软件这个坑里摸爬滚打。培训、学习、游戏、影视解说……都得用它。这时候没个拿得出手的私藏软件&#xff0c;还怎么混&#xff1f;说实话&#xff0c;录屏软件这两年也用了不少&#xff0c;基本功能是有但总觉得缺点什么&#xff0c;直…

01-制作人和迈克尔杰克逊-《人月神话》中译本纠错及联想

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 2001年&#xff0c;我们翻译《人月神话》的时候&#xff0c;由于水平有限&#xff0c;译文中存在不少错误。 这些年&#xff0c;随着阅历的增长&#xff0c;在重读的时候偶尔也会有“…

捷报连连!怿星科技荣获北京市科学技术进步奖一等奖

近期&#xff0c;北京市科学技术委员会、中关村科技园区管理委员会揭晓了2022年北京市科学技术奖的获奖名单。其中&#xff0c;由清华大学牵头、怿星科技参与开发的《电动汽车底盘运动控制与能量管理关键技术及应用》项目荣获“北京市科学技术进步奖一等奖”。 作为北京市政府设…

抖音如何推广引流?抖音推广引流的经验与工具分享

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、了解抖音推广的价值 抖音作为一款热门的短视频应用&#xff0c;拥有庞大的用户群体和强大的传播力。通过抖音推广&#xff0c;企业或个人可以在短时间内获得大量的曝光和流量&…

CodeWhisperer 一款好玩的 AI 插件

忙里抽闲&#xff0c;今天试了试 CodeWhisperer 这款插件&#xff0c;我是在 IDEA 中做的测试&#xff0c;下面是我的一些使用感想&#xff1a; 安装 CodeWhisperer 插件&#xff1a;在 IntelliJ IDEA 中&#xff0c;可以通过插件管理器安装 CodeWhisperer 插件&#xff0c;然…

『亚马逊云科技产品测评』活动征文|开发一个手机官网

『亚马逊云科技产品测评』活动征文&#xff5c;开发一个手机官网 授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 前言 …

一文了解:离散型制造业轻量化MES解决方案

离散型制造业的特点 离散型生产行业主要是通过对原材料物理形状的改变、组装&#xff0c;成为产品&#xff0c;使其增值。典型的离散型行业包括&#xff1a;机械、电子、航空、汽车等行业。这些企业既有按订单生产&#xff08;MTO&#xff09;&#xff0c;也有按照库存生产&am…

数字化转型背景下,企业如何做好知识管理?

在当今数字化转型的时代&#xff0c;企业面临着日益复杂和快速变化的商业环境。知识管理成为了企业成功的关键之一。有效地管理和利用知识资源可以提升企业的创新能力、决策质量和竞争力。以下我列了一些关键的点&#xff0c;讲讲在数字化转型背景下&#xff0c;企业如何可以做…

软件测试/测试开发/人工智能丨​Python运算符解析,小白也能轻松get

什么是运算符 运算符是用于进行各种运算操作的符号或关键词。 在数学和计算机编程中&#xff0c;运算符被用来表示不同的运算操作&#xff0c;例如加法、减法、乘法、除法等。 比如: 4 5&#xff0c;其中&#xff0c;4和5为操作数&#xff0c;为运算符。a 10&#xff0c;…

录屏软件自动开启录视频,是如何实现的?

工作要留痕&#xff0c;作为职场人的一项必备技能&#xff0c;因此许多人在做一些重要操作的时候&#xff0c;就会提前开启录屏软件&#xff0c;把操作的每一个步骤进行录制&#xff0c;以避免在出现问题的时候进行检查。当每天都需要在固定的时间点重复某项工作的时候&#xf…

openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库

文章目录 openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库126.1 前提条件126.2 背景信息126.3 操作步骤 openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库 126.1 前提条件 系统中需要有审计管理员或者具有审计管理员权…

数据中心走向绿色低碳,液冷存储舍我其谁

引言&#xff1a;没有最冷&#xff0c;只有更冷&#xff0c;绿色低碳早已成为行业关键词。 【全球存储观察 &#xff5c; 科技热点关注】 每一次存储行业的创新&#xff0c;其根源离不开行业端的用户需求驱动。 近些年从数据中心建设的整体发展情况来看&#xff0c;从风冷到…

提升 Python 执行速度:Codon、C/C++、Rust、Numba(JIT)、Taichi、Nuitka、MatxScript

几种流行的 Python 性能加速方案对比&#xff1a;https://zhuanlan.zhihu.com/p/604519817 对于一般通用场景用户&#xff0c;对性能没有那么强烈的诉求&#xff0c;紧跟官方步伐&#xff0c;升级到最新版本的 Python 既可&#xff0c;或者使用 PyPy。Numba、Codon、Taichi 等这…