如何将 HTML 字符串转换成 DOM 对象:用 DOMParser

news2024/11/24 4:40:30

如何将 HTML 字符串转换成 DOM 对象:用 DOMParser

一、问题描述

有的时候我们需要处理一些 HTML 字符串,比如我需要从下方 HTML 字符串中提取每个 <a> 标签的内容和属性。

<pre>
	<a href="cc1245.jpg">cc1245.jpg</a>
	<a href="image.jpg">image.jpg</a>
	<a href="movie.mp4">movie.mp4</a>
</pre>

通过正则匹配是可以的,但很麻烦,不如直接将它转换成 DOM 对象,再用操作 DOM 的那一套 API 进行处理,就会方便很多。

DOM 操作: Element 节点
https://wangdoc.com/javascript/dom/element

接下来我们将上面的字符串转换成 DOM 对象,再拆分每个 <a> 标签的内容变换成 JSON 对象,再做其它处理。

二、String -> DOM


this.htmlContent = `上面的字符串`


let doc = new DOMParser().parseFromString(this.htmlContent, "text/xml") // 转换 string -> dom 对象
let linkDomList = doc.querySelector('pre').children  // 用 element API 获取其中的 pre 标签内的对象
for (let i = 0; i < linkDomList.length; i++) { // 遍历这个 children 并输出
    console.log(linkDomList[i])
}

里面的 href 值不用在意,我是经过处理了的。

结果:
在这里插入图片描述

三、DOM -> JSON

完善上面的代码,让其把数据提取到 JSON 中,就是这样:

let doc = new DOMParser().parseFromString(this.htmlContent, "text/xml")
let linkDomList = doc.querySelector('pre').children

   let linkArray = []

   for (let i = 0; i < linkDomList.length; i++) {
       let currentDom = linkDomList[i]
       linkArray.push({
           name: currentDom.textContent, // <a> 标签内的文字内容
           href: currentDom.getAttribute('href'), // <a> 标签的 href 属性
       })
   }
   console.log(linkArray)

结果:
在这里插入图片描述

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

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

相关文章

将ipa文件上架苹果应用商店详细教程

使用windows电脑打包好uniapp的ios应用之后&#xff0c;还有一个麻烦事&#xff0c;就是需要将这个打包好的ipa格式的文件&#xff0c;上架到苹果的应用商店。用户才能安装。 而苹果提供的上传工具&#xff0c;比如xcode或transports&#xff0c;只能安装在mac电脑&#xff0c…

国产AIGC大模型汇总

“ 随着ChatGPT和GPT-4的出现&#xff0c;直接引爆了全球的AIGC大模型市场&#xff01;为了赶上这一波热潮&#xff0c;国内的大厂和创业公司也纷纷内卷起来&#xff0c;相继发布了自己的大模型。但是到目前为止&#xff0c;没有一个大模型能与ChatGPT相提并论&#xff0c;更比…

【算法系列之二叉树III】leetcode236. 二叉树的最近公共祖先

617.合并二叉树 力扣题目链接 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&…

MySQL 三万字精华总结 + 面试100 问,和面试官扯皮绰绰有余

MySQL 三万字精华总结 面试100 问&#xff0c;和面试官扯皮绰绰有余 写在之前&#xff1a;不建议那种上来就是各种面试题罗列&#xff0c;然后背书式的去记忆&#xff0c;对技术的提升帮助很小&#xff0c;对正经面试也没什么帮助&#xff0c;有点东西的面试官深挖下就懵逼了。…

linuxOPS基础_linux文本文件查看

vi/vim vim文档编辑操作太多了,可以看这篇单独介绍vim的文章>https://blog.csdn.net/weixin_44368963/article/details/130963920 cat查看文件 命令&#xff1a;cat 作用&#xff1a;查看文件内容 语法&#xff1a;#cat 文件名称 ​ #cat 文件1 文件2 > 文件3 **特别注…

如何利用CiteSpace快速锁定领域内最新研究热点并制作精美的可视化专题图?

【基于Citespace和vosviewer文献计量学相关论文 】 ​ 01 文献计量学方法与应用 1. 文献计量学方法基本介绍 2. 与其他综述方法区别联系 3. 各学科领域应用趋势近况 4. 主流分析软件优缺点对比 5. 经典高分10SCI思路复盘 6. 软件安装与Java环境配置 02 主题确定、数据检…

Vue+springboot校园跳蚤二手市场管理系统

摘 要 本毕业设计的内容是设计并且实现一个基于Springboot框架的校园跳蚤市场管理系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xff0c;Tomcat网络信息服务作为应用服务器。校园跳蚤市场管理系统的功能已基本实现&#xff0c;主要包括用户、卖家、商品分类…

中国存储竞争新格局:曙光掌舵分布式存储市场

近日&#xff0c;赛迪顾问发布了《中国分布式存储市场研究报告&#xff08;2023&#xff09;》。 作为数字经济的底座&#xff0c;数据存储的重要性日益凸显。 近年来&#xff0c;凭借高性能、高可靠性、高可扩展性等优势&#xff0c;基于分布式架构的分布式存储迎来了蓬勃发…

基于SpringBoot+vue的火车订票管理系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

动静态库的区别

(5条消息) linux-动态库制作与使用_云的小站的博客-CSDN博客 (5条消息) linux-静态库制作与使用_云的小站的博客-CSDN博客 目录 编译区别 使用不同编译的可执行程序。 推荐使用动态链接 动态链接具有以下优缺点 编译区别 动态库&#xff1a;代码不加载到可执行程序中&am…

Java:Mybatis-Plus自动填充功能配置和使用

Mybatis-Plus可以实现字段自动填充功能 文档 https://baomidou.com/pages/4c6bcf/ 目录 需求数据库设置默认值通过代码的方式进行自动填充配置自动填充设置方式一设置方式二 测试依赖pom.xml 需求 我们需要自动填充的字段&#xff1a; 插入数据时自动填充&#xff1a;creat…

view的常用属性和方法介绍(arcgis for javascript)

ArcGIS for JavaScript中的视图&#xff08;view&#xff09;是一个地图实例类&#xff0c;用于管理地图的显示区域、符号和标注等。通过视图类&#xff0c;可以实现以下功能&#xff1a; 显示地图&#xff1a;将地图显示在Web页面上。 缩放&#xff1a;缩放视图到指定的级别。…

Benewake(北醒) 快速实现TF40与电脑通信操作说明

目录 一、前言二、工具准备1. TTL-USB 转接线2. TF403. 兆信直流电源4. 连接线5. PC&#xff1a;Windows 系统6. 上位机 WINCC_TF 三、 连接方式1. TTL-USB 转接线接口说明2. TF40 引脚功能及连接说明3. 连线图 四、TF40 与电脑通信操作说明1. 参数设置2.获取测距值3. 设置波特…

百度倾力出品|《神经网络机器翻译技术及产业应用》正式上线

随着经济社会的国际交流合作日益密切&#xff0c;人们迫切需要高质量、高效率的跨语言信息获取和传播工具。《神经网络机器翻译技术及产业应用》以产业需求为牵引&#xff0c;分析了新时期机器翻译的产业需求特点和挑战&#xff0c;介绍了神经网络翻译的基本理论、前沿技术以及…

10课程设计收尾及优秀作品展示答辩【FPGA模型机课程设计】

10课程设计收尾及优秀作品展示答辩【FPGA模型机课程设计】 前言说明推荐10课程设计收尾及优秀作品展示答辩安排 目录一、单周期CPU的设计过程1、基本的20条指令固定指令格式设计I 型指令设计J型指令设计lw sw指令设计 2、扩展的20条指令J型扩展指令设计乘法除法指令格式 3、实现…

阿里云推出工作学习 AI 助手“通义听悟”;谷歌发布 PaLM2;吴恩达推出了三门课

&#x1f989; AI新闻 &#x1f680; 阿里云推出工作学习 AI 助手“通义听悟” 摘要&#xff1a;阿里云峰会・粤港澳大湾区上&#xff0c;阿里云宣布推出最新产品“通义听悟”&#xff0c;该产品能用于会议讨论、教学培训、调研访谈、视频观看等场景&#xff0c;依托大模型&a…

CDS Core Data Services S4 CDS view--1

下一代的数据库视图。比DDIC view能干。 也就是S4上了之后就用这个CDS view了。 目录 1. 软件安装 2. CDS view 是啥 3. 怎么去建CDS view 4. 如何修改一个CDS view&#xff0c;添加association关联 5. 一些有用的功能 6. 基础语法 6.1 Case 6.2 Cast 6.3 String 6…

【程序】基于matlab使用线性 FM 脉冲波形拉伸处理进行距离估计

一、前言 此示例展示了如何在使用线性 FM 脉冲波形的雷达系统中使用拉伸处理来估计目标的范围。 二、介绍 线性FM波形是现代雷达系统中的热门选择&#xff0c;因为它可以通过扫描宽带宽来实现高范围分辨率。然而&#xff0c;当带宽达到数百兆赫甚至千兆赫兹时&#xff0c;在数字…

【C进阶】文件操作(下)(详解--适合初学者入门)

目录 补充的知识点:> 标准流 FILE型 fopen(打开文件) fclose(关闭文件) 5.文件的随机读写&#x1f4bb; 5.1 fwrite&#x1f4c2; 5.2fread&#x1f4c2; 5.3fseek&#x1f4c2; 5.4 ftell&#x1f4c2; 5.5 rewind&#x1f4c2; 6.文本文件和二进制文件&#x1f4bb; 7.文件…

如何做好网站建设定制开发

随着互联网的发展&#xff0c;如今的网站建设技术越来越先进&#xff0c;所以在网站建设定制开发中就出现了很多的模版&#xff0c;如&#xff1a;企业类型、产品信息、品牌介绍等。当然网站建设定制开发不是说只要模版就行了&#xff0c;对于网站建设而言&#xff0c;模版只是…