【前端】XML,XPATH,与HTML的关系

  • XML与HTML关系
    XML(可扩展标记语言)和 HTML(超文本标记语言)是两种常见的标记语言,但它们有不同的目的和用途。它们都使用类似的标记结构(标签),但在设计上存在一些关键的差异。
    XML 是为了存储和传输数据而设计的标记语言。它不关注数据如何呈现,而是强调数据的结构化存储。XML 是 严格的,要求标签必须是成对的,所有的标签必须正确闭合。
    • 主要区别:
      目的不同:HTML 主要用于呈现数据,XML 主要用于存储和传输数据。
      严格性:HTML 容忍一些语法错误,XML 不容忍任何错误。
      灵活性:XML 可以定义自定义标签,而 HTML 使用固定的标签(如 < div>、< span>、< img> 等)。
  • XPATH
    XPath(XML Path Language)是一种用于在 XML 文档中查找信息的语言。它可以通过路径表达式选取 XML 文档中的元素或属性。在 XML 中,XPath 被广泛用于查询节点。
    尽管 HTML 和 XML 有些不同,但它们有许多相似之处。主要的相似之处是它们的结构都遵循树形结构,并且都使用标记(标签)来组织内容。因此,XPath 也能够解析 HTML 文档。
  • 为什么 XPath 能解析 HTML:
  1. HTML 也是 XML 的一种变体:
    虽然 HTML 语法上不完全符合 XML 的规范,但它的结构仍然遵循树形结构。元素可以有子元素、属性等,可以构成类似于 XML 的层级结构。
    现代浏览器的 HTML 解析器(如 DOM(文档对象模型))会将 HTML 转换为一个标准的 DOM 树,类似于 XML 文档的树形结构。XPath 就是通过该树形结构来定位和查询元素的。
  2. DOM 与 XPath 配合使用:
    当你使用 XPath 查询 HTML 时,实际上是通过 DOM API 来操作的。浏览器会解析 HTML 文档并将其转换为一个 DOM 树,XPath 语法可以用来在这个 DOM 树上进行查询。
    即使 HTML 存在一些不规范的部分(例如缺少结束标签),浏览器仍然能够通过容错机制生成一个合适的 DOM 树,XPath 可以在这个 DOM 树上进行查询。
  3. HTML 的标准化:
    即便 HTML 本身是宽松的,现代浏览器会对其进行宽容的解析,并生成符合 DOM 标准的树结构。即使 HTML 中的语法有问题,浏览器也会进行修复。因此,XPath 仍然可以在这个树状结构中进行查找。
  • XPath使用场景
    以下是一些会用到XPath的情况:
    一、网页数据提取1. 爬虫开发 - 当编写网络爬虫从HTML页面提取特定信息时,XPath非常有用。例如,要从新闻网站提取文章标题、正文内容、发布时间等信息。如果HTML页面结构是使用类似<h1>标签表示标题,<p>标签表示正文,通过XPath可以精确地定位到这些元素。比如//h1可以找到页面中的所有一级标题元素,然后进一步筛选出包含新闻标题的那个元素。2. 数据挖掘与分析 - 在从网页中挖掘数据进行分析时,XPath能帮助定位到所需的数据块。例如分析电商网站上商品的价格、名称、评价数量等信息。假设商品价格在一个<span>标签内,且该<span>有特定的类名(如price - span),就可以使用XPath表达式(如//span[@class = 'price - span'])来定位到价格元素。
    二、自动化测试1. UI自动化测试 - 在对网页或软件的用户界面进行自动化测试时,需要定位界面上的各种元素来执行操作(如点击按钮、输入文本等)。如果使用基于XPath的定位方式,可以准确地找到要操作的元素。例如在测试一个登录页面时,登录按钮可能在一个<button>标签内,且该<button>标签有特定的属性,通过XPath表达式就能定位到这个登录按钮元素,然后模拟点击操作。
    三、XML数据处理1. 企业数据集成 - 在企业内部,不同系统之间可能使用XML格式进行数据交换。当需要从这些XML文档中查询、提取或转换特定数据时,XPath是一种有效的工具。例如,企业的财务系统和库存系统之间交换包含产品信息的XML文件,要从这个XML文件中获取特定产品的库存数量等信息,就可以使用XPath表达式在XML结构中定位到相应的元素。

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

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

相关文章

安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类

文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…

贪心算法精品题

1.找钱问题 本题的贪心策略在于我们希望就可能的保留作用大的5元 class Solution { public:bool lemonadeChange(vector<int>& bills) {std::map<int ,int> _map;for(auto ch:bills){if(ch 5) _map[ch];else if(ch 10){if(_map[5] 0) return false;else{_m…

辛格迪客户案例 | 鼎康生物电子合约系统(eSign)项目

01 案例企业 鼎康(武汉)生物医药有限公司于2013年06月19日成立 &#xff0c;是一家总部位于湖北武汉的CDMO公司&#xff0c;坚持以客户为中心&#xff0c;以及时、经济和高质量为服务导向。鼎康生物拥有先进的150,000平方英尺的生产厂房&#xff0c;生产设施位于中国武汉的Bio…

多个pdf合并成一个pdf的方法

将多个PDF文件合并优点&#xff1a; 能更容易地对其进行归档和备份.打印时可以选择双面打印&#xff0c;减少纸张的浪费。比如把住宿发票以及滴滴发票、行程单等生成一个pdf&#xff0c;双面打印或者无纸化办公情况下直接发送给财务进行存档。 方法: 利用PDF24 Tools网站 …

算法-数据结构(图)-迪杰斯特拉最短逻辑算法( Dijkstra)

迪杰斯特拉算法&#xff08;Dijkstras Algorithm&#xff09; 是一种用于计算单源最短路径的经典算法&#xff0c;由荷兰计算机科学家 艾兹赫尔迪杰斯特拉&#xff08;Edsger W. Dijkstra&#xff09; 于1956年提出。它的主要目标是找到从图中的某个源节点到所有其他节点的最短…

windows设置暂停更新时长

windows设置暂停更新时长 win11与win10修改注册表操作一致 &#xff0c;系统界面不同 1.打开注册表 2.在以下路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键新建 DWORD 32位值&#xff0c;名称为FlightSettingsMaxPauseDays 根据需求填写数…

降维攻击!PCA与随机投影优化高维KNN

引言&#xff1a;高维数据的“冰山困境” 假设你正在处理一个电商平台的商品图片分类任务&#xff1a;每张图片被提取为1000维的特征向量&#xff0c;100万条数据的距离计算让KNN模型陷入“维度地狱”——计算耗时长达数小时&#xff0c;且内存占用超过10GB。 破局关键&#…

在ubuntu 24.04.2 通过 Kubeadm 安装 Kubernetes v1.31.6

文章目录 1. 简介2. 准备3. 配置 containerd4. kubeadm 安装集群5. 安装网络 calico 插件 1. 简介 本指南介绍了如何在 Ubuntu 24.04.2 LTS 上安装和配置 Kubernetes 1.31.6 集群&#xff0c;包括容器运行时 containerd 的安装与配置&#xff0c;以及使用 kubeadm 进行集群初始…

信刻光盘安全隔离与信息交换系统让“数据摆渡”安全高效

随着数据传输、存储及信息技术的飞速发展&#xff0c;信息安全保护已成为重中之重。各安全领域对跨网数据交互的需求日益迫切&#xff0c;数据传输的安全可靠性成为不可忽视的关键。为满足业务需求并遵守保密规范&#xff0c;针对于涉及重要秘密信息&#xff0c;需做到安全的物…

6.6.5 SQL访问控制

文章目录 GRANT授予权限REVOKE回收权限 GRANT授予权限 GRANT语句可以给用户授予权限&#xff0c;基本格式是GRANT 权限 TO 用户。在授权时&#xff0c;WITH GRANT OPTION是可选项&#xff0c;有此句话&#xff0c;被授予权限的用户还能把权限赋给其他用户。 REVOKE回收权限 RE…

蓝桥真题讲解

目录 第一题 题目链接 题目解析 代码原理 代码编写 本题总结 第二题 题目链接 题目解析 代码原理 代码编写 本题总结 第三题 题目链接 题目解析 代码原理 代码编写 本题总结 第一题 题目链接 题目解析 代码原理 图一 图二 图二中的红色字&#xff0c;请仔…

Allegro PCB元件库文件引起的问题-看不见器件,但是不能预览,也就不能放置了

PCB元件库必须包含PCB&#xff08;.psm, .dra)文件&#xff0c;和PAD&#xff08;.pad)文件 在Allegro里Path设置注意事项&#xff1a; 针对psmpath & padpath会有多个文件夹地址的情况。在放一个新的元件到PCB&#xff0c;需要把对应的元件的PCB & PAD地址都放在第一…

Prompt Engineering for Large Language Models

题目 大型语言模型的快速工程 简介 随着 OpenAI 的 ChatGPT 和 Google 的 Bard 等软件的普及&#xff0c;大语言模型&#xff08;LLM&#xff09;已经渗透到生活和工作的许多方面。例如&#xff0c;ChatGPT 可用于提供定制食谱&#xff0c;建议替换缺失的成分。它可用于起草研…

python-leetcode-使用最小花费爬楼梯

746. 使用最小花费爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 解法 1&#xff1a;动态规划&#xff08;O(n) 时间&#xff0c;O(n) 空间&#xff09; class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:n len(cost)dp [0] * (n 1) # 额外多…

服务器IPMI用户名、密码批量检查

背景 大规模服务器部署的时候&#xff0c;少不了较多的网管和监测平台&#xff0c;这些平台会去监控服务器的性能、硬件等指标参数&#xff0c;为了便于管理和控制&#xff0c;则需要给服务器IPMI带外管理添加较多的用户&#xff0c;这就需要对较多的服务器检查所对应的IPMI用…

docker-compose部署开源堡垒机Orion-Visor——筑梦之路

git clone --depth1 https://github.com/dromara/orion-visorcd orion-visor docker compose pull# 配置,此处我保持默认cp .env.example .env# 启动进行数据库初始化docker compose up -d# 访问http://[ip]:8081进行登陆Adminer# 依次导入这些初始化sql orion-visor/sql/init-…

【大模型系列篇】DeepSeek开源周,解锁AI黑科技

&#x1f525; Day1&#xff1a;FlashMLA —— GPU推理加速器 专为处理长短不一的AI推理请求而生&#xff0c;就像给Hopper GPU装上了智能导航&#xff0c;让数据在芯片上跑出3000GB/s的"磁悬浮"速度。✅ 已支持BF16格式&#xff5c;580万亿次浮点运算/秒FlashMLA G…

scala基础

Scala基础 scala基础Scala介绍第一个scala代码object和class的区别关键区别伴生类和伴生对象&#xff1a; 字节码解析在java中创建三个类 反编译代码编译User.class源码后的结果编译Emp.class源码后的结果 注释Scala类型推断&至简原则变量var和val之间的区别可变变量不可变…

智能家居遥控革命!昂瑞微HS6621EM:用「芯」定义AIoT时代的语音交互标杆

AIoT爆发期&#xff0c;遥控器为何成为智能家居的「隐形战场」&#xff1f; 随着Meta、苹果等巨头加速布局空间计算&#xff0c;智能家居生态正从「单一设备联网」向「全场景无感交互」跃迁。作为高频使用的入口设备&#xff0c;语音遥控器的性能直接决定用户体验天花板。昂瑞微…

绕过密码卸载360终端安全管理系统

一不小心在电脑上安装了360终端安全管理系统&#xff0c;就会发现没有密码&#xff0c;就无法退出无法卸载360&#xff0c;很容易成为一个心病&#xff0c;360终端安全管理系统&#xff0c;没有密码&#xff0c;进程无法退出&#xff0c;软件无法卸载&#xff0c;前不久听同事说…