Я читаю из API кучу html-контента
[
{
id: 1,
content: '{html...}'
},
{
id: 2,
content: '{html...}'
}
]
После получения этих данных я делаю некоторые замены, используя sanitize-html .Но теперь мне нужно проделать дополнительную работу.
Иногда я получаю это
<p>some text...<p>
<p>
<p>some text...<p>
<p>
<img />
<span>some text</span>
<p>
<p>
или это
<p>some text...<p>
<p>some text...<p>
<p>
<img />
<span>some text</span>
<p>
То, что я притворяюсь, это сохранить мои параграфына одном уровне, поэтому я подумал использовать cheerio (который использует ядро jQuery), делая что-то вроде
const cheerio = require('cheerio');
const $ = cheerio.load(content);
content = $('p:not(:has(>p))').html();
Но это принесет только первый p
и только при его наличии.И если я получу остальные вручную, я могу потерять правильный порядок содержимого.
Итак, есть ли хороший способ очистить HTML, сохраняя только один уровень p
в соответствии с моим примером?