如何用Cheerio从含多标签的XML元素中提取指定可读文本
用Cheerio提取XML中CDATA内指定
标签的文本
实现步骤
- 以XML模式加载整个文档,确保Cheerio正确解析CDATA内容
- 定位
<description>标签,提取其内部的HTML片段(CDATA包裹的内容会被自动剥离标记) - 将该HTML片段重新加载为Cheerio实例,通过索引选择第二个
<p>标签并提取文本
代码示例
const cheerio = require('cheerio'); // 示例XML内容 const xmlContent = ` <item> <description><![CDATA[ <p>无关段落内容</p> <p>Eddie Hearn views it as positive if Ryan Garcia teams up with his former trainer Eddy Reynoso to try and pick up</p> <p>其他段落内容</p> ]]></description> </item> `; // 开启XML模式加载XML文档 const $xml = cheerio.load(xmlContent, { xmlMode: true }); // 获取description标签内的HTML片段 const descriptionHtml = $xml('description').html(); // 将HTML片段转为可操作的Cheerio实例 const $html = cheerio.load(descriptionHtml); // 提取第二个<p>的文本(eq(1)对应索引1,即第二个元素) const targetText = $html('p').eq(1).text().trim(); console.log(targetText);
注意事项
- 若存在多个
<description>标签,需先定位到对应的父节点(比如<item>)再获取目标标签,例如$xml('item').eq(0).find('description').html() - 必须开启
xmlMode: true,否则Cheerio无法正确识别XML结构和CDATA内容
内容的提问来源于stack exchange,提问作者Daniel Tolentino
相关产品推荐
相关产品推荐

