乐闻世界logo
搜索文章和话题

How to make cheerio not to self-close tags?

3 个月前提问
3 个月前修改
浏览次数18

1个答案

1

在使用cheerio来解析和操作HTML时,可能会遇到自闭合标签的问题,尤其是当处理像<br>, <img>或者其他一些应该是空标签的元素时。Cheerio基于jQuery的核心功能,通常会自动处理这些标签的闭合。

如果需要确保标签不被自动闭合,可以考虑以下几个方面来解决或规避这个问题:

  1. 使用XML模式解析: Cheerio提供了一个选项,在加载HTML时可以指定是以XML模式来解析,这将保留所有标签的原始状态,不会自动闭合空标签。例如:

    javascript
    const cheerio = require('cheerio'); const html = `<div>Hello <br> world</div>`; const $ = cheerio.load(html, { xmlMode: true }); console.log($.html());

    这样,输出的HTML将保持<br>标签未闭合的形式。

  2. 手动处理特定标签: 如果你只是关心某几种特定的标签,那么可以在使用cheerio处理过程中,对这些特定的标签进行特殊处理,比如添加一个闭合标签或者替换为一个已经闭合的标签。例如,你可以将所有<br>标签替换为<br/>

    javascript
    const processedHtml = $('body').html().replace(/<br>/g, '<br/>'); console.log(processedHtml);

    这个方法需要根据具体场景来调整,确保不会影响到其他元素的正常显示。

使用上述方法中的任何一种,都可以帮助你更好地控制HTML内容的解析和输出,避免不必要的自闭合问题。当然,选择哪种方法取决于你的具体需求和你处理的HTML内容的复杂性。

2024年8月16日 23:45 回复

你的答案