0

0

JS的DOMParser和XMLSerializer怎么用

幻夢星雲

幻夢星雲

发布时间:2026-01-01 11:49:02

|

286人浏览过

|

来源于php中文网

原创

DOMParser 和 XMLSerializer 是浏览器原生 API,分别用于字符串与 DOM 对象互转:前者用 parseFromString() 解析 HTML/XML 字符串为 Document,后者用 serializeToString() 将节点序列化为字符串;配合使用可安全修改 HTML 再转回字符串。

js的domparser和xmlserializer怎么用

DOMParser 和 XMLSerializer 是浏览器中处理 HTML/XML 字符串与 DOM 对象互转的两个核心 API。前者把字符串解析成文档对象,后者把文档对象序列化回字符串。它们不依赖外部库,轻量且原生支持好。

用 DOMParser 解析 HTML 或 XML 字符串

DOMParser 可以将一段字符串安全地转为可操作的 Document 对象,常用于动态生成 DOM、解析远程 HTML 片段或校验 XML 结构。

  • 创建实例后调用 parseFromString(),传入字符串和 MIME 类型("text/html""application/xml"
  • 对 HTML 字符串,推荐用 "text/html",这样会走标准 HTML 解析器,自动修复常见错误(如缺失闭合标签)
  • 对 XML 字符串,必须用 "application/xml"(或 "text/xml"),否则可能解析失败或忽略命名空间

示例:

企业软件介绍主页html模板
企业软件介绍主页html模板

一款多用途的企业软件前端HTML模板。IT软件服务公司网站响应式单页模板。基于CSS、JS、HTML模块化原则创建的。如果您的站点不需要所有元素,那么可以轻松地删除不必要的组件。模板的代码干净,友好,注释良好。这使得编辑和自定义模板变得很容易。

下载
const parser = new DOMParser();
const htmlDoc = parser.parseFromString("

Hello

", "text/html"); console.log(htmlDoc.body.firstElementChild.textContent); // "Hello" const xmlStr = ""; const xmlDoc = parser.parseFromString(xmlStr, "application/xml"); if (xmlDoc.querySelector("parsererror")) { console.error("XML 解析出错"); }

用 XMLSerializer 序列化 DOM 回字符串

XMLSerializer 主要用于把 Document、Element 等节点对象还原成字符串,适合做 DOM 快照、生成 HTML 模板、提取子树内容等。

  • 只接受 Node 实例(如 document、element、documentFragment),不能传字符串或普通对象
  • 对 HTML 文档,输出的是“序列化后的 HTML”,不是原始源码(比如会补全 结构)
  • 若只想序列化某个元素及其子内容,直接传该 element 即可,无需整个 document

示例:

const serializer = new XMLSerializer();
const div = htmlDoc.querySelector("div");
console.log(serializer.serializeToString(div)); // "

Hello

"

配合使用:修改后再转回字符串

这是常见工作流:字符串 → DOM → 修改节点 → 转回字符串。比正则替换更可靠,尤其涉及嵌套、属性、特殊字符时。

  • 先用 DOMParser 解析,再用 querySelector / appendChild / setAttribute 等方法操作
  • 操作完成后,用 XMLSerializer 把目标元素(或 document.documentElement)序列化
  • 注意:HTML 中 script/style 标签的内容不会被自动执行,只是文本节点,安全

示例(给所有链接加 target="_blank"):

const html = "LinkExt";
const doc = new DOMParser().parseFromString(html, "text/html");
doc.querySelectorAll("a").forEach(a => a.target = "_blank");
const result = new XMLSerializer().serializeToString(doc.body);
// "LinkExt"

注意事项和兼容性

这两个 API 在现代浏览器中支持良好(Chrome 1+、Firefox 2+、Safari 3.1+、Edge 12+),但仍有细节需留意:

  • DOMParser 解析失败时不会抛异常,而是返回含 的文档,需手动检查
  • XMLSerializer 对 HTML 文档序列化时,会标准化大小写(如
    )、添加缺失结构,不保留原始格式缩进
  • 不支持序列化 Shadow DOM 内容(仅限 light DOM)
  • 服务端 Node.js 不原生支持,需用 jsdom 等库模拟

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

729

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

714

2023.11.06

html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

594

2023.06.14

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

638

2023.06.21

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

459

2023.07.31

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

241

2023.08.01

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2856

2023.08.11

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

500

2023.08.11

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.7万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.2万人学习

CSS教程
CSS教程

共754课时 | 17.3万人学习

最新文章

更多
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号