【前端】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结构中定位到相应的元素。
相关推荐
dy17173 小时前
element-plus表格默认展开有子的数据
前端·javascript·vue.js
2501_915918416 小时前
Web 前端可视化开发工具对比 低代码平台、可视化搭建工具、前端可视化编辑器与在线可视化开发环境的实战分析
前端·低代码·ios·小程序·uni-app·编辑器·iphone
程序员的世界你不懂7 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
索迪迈科技7 小时前
网络请求库——Axios库深度解析
前端·网络·vue.js·北京百思可瑞教育·百思可瑞教育
gnip7 小时前
JavaScript二叉树相关概念
前端
rannn_1117 小时前
【Javaweb学习|实训总结|Week1】html基础,CSS(选择器、常用样式、盒子模型、弹性盒布局、CSS定位、动画),js(基本类型、运算符典例)
css·笔记·学习·html
一朵梨花压海棠go8 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
attitude.x8 小时前
PyTorch 动态图的灵活性与实用技巧
前端·人工智能·深度学习
β添砖java8 小时前
CSS3核心技术
前端·css·css3
空山新雨(大队长)8 小时前
HTML第八课:HTML4和HTML5的区别
前端·html·html5