You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript/Vue中解析含嵌套HTML标签的字符串生成数组的方法

HTML根级标签解析为数组实现方案

实现思路

不要用正则手动匹配拆分HTML(嵌套场景下正则容错率极低),直接用浏览器原生DOMParserAPI把HTML字符串转为DOM树,遍历根节点的直接子元素,提取每个元素的完整outerHTML存入数组即可,100%保留原有标签、属性、嵌套结构,不会修改任何原有内容。

完整代码实现

var line_array = [];
var textData = `
     <img src="imgurl" alt="" /> 
     <p>some text</p>
     <p style="cssStyle">some text</p>
     <span style="cssStyle"> some text </span>
     <p style="cssStyle">some text<span style="cssStyle"> span text </span></p>
     <a href=""><span style="style">text</span><img src="https://via.placeholder.com/100" alt=""/>  </a>
`;

// 核心解析方法
function parseHtmlToRootArray(htmlStr) {
  const parser = new DOMParser();
  // 将HTML字符串解析为标准DOM文档
  const htmlDoc = parser.parseFromString(htmlStr, 'text/html');
  const result = [];
  // 遍历body下所有直接子元素(即你需要的根级标签)
  for (const rootEl of htmlDoc.body.children) {
    result.push(rootEl.outerHTML.trim());
  }
  return result;
}

// 调用示例
line_array = parseHtmlToRootArray(textData);
console.log(line_array); // 输出格式完全符合你的预期

// 原有activate方法修改后
activate: function (){
  const sourceText = document.getElementById('sourceText').innerHTML;
  line_array = parseHtmlToRootArray(sourceText);
}

注意事项

  • 该方法自动过滤根元素外的多余换行、空白字符,内部嵌套内容的格式完全保留
  • 兼容性覆盖所有现代浏览器,IE10及以上版本也可正常使用
  • 如果你需要保留根级的纯文本节点,可以把遍历的htmlDoc.body.children改为htmlDoc.body.childNodes,额外做节点类型判断即可

内容的提问来源于stack exchange,提问作者Muhammad Masudur Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:15:05