是否有一个好的 npm 包可以删除在 NodeJS 服务器上运行的 html 字符串中不必要的嵌套标签(无浏览器 DOM)?我尝试过 sanitize-html,但似乎不可能做到这一点。
我收到用户发来的电子邮件html,所以我无法控制输入格式,并且有时会带有不必要的嵌套标签,如下所示:
<div>
<div>
<div>
<div>
<div>Hey Bob:<br /></div>
<div>
I wanted to see if you had a chance to review this. Three things come to mind:<br />
</div>
<ol>
<li>blah<br /></li>
<li>blah<br /></li>
<li>blah<br /></li>
</ol>
</div>
</div>
</div>
</div>
我想解开外部 div(以及字符串中任何其他不必要的包装标签),直到得到如下所示的结果:
<div>
<div>Hey Bob:<br /></div>
<div>
I wanted to see if you had a chance to review this. Three things come to mind:<br />
</div>
<ol>
<li>blah<br /></li>
<li>blah<br /></li>
<li>blah<br /></li>
</ol>
</div>
我尝试使用cheerio和jsdom,但似乎都没有像python中beautifulsoup那样的解包功能。
最佳答案
不确定哪个包可以做到这一点,但在你的情况下,可以使用一些基本的普通 JavaScript 轻松完成:
const bodyNode = document.querySelector("body");
function ParseHtml(node)
{
if (node.firstElementChild.nodeName === 'BR')
{
return node.parentNode.outerHTML;
}
return ParseHtml(node.firstElementChild);
}
console.log(ParseHtml(bodyNode));
关于html - 解开 HTML 字符串中不必要的嵌套 div (NodeJs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59080257/