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

使用RSS时遇未闭合标签无法获取innerHTML,求jQuery解决方案

解决RSS未闭合标签导致jQuery无法获取innerHTML的问题

我之前做RSS相关项目时也碰到过一模一样的问题——非标准的未闭合标签直接让jQuery的DOM解析失效,根本拿不到想要的内容。结合你的情况,给你几个实用的解决方案:

方案1:预处理RSS文本,补全常见未闭合标签

既然jQuery依赖标准DOM结构,那我们先把原始RSS文本里的未闭合标签补全,再交给jQuery解析。比如针对<br>、<img>这类自闭合标签,或者其他遗漏闭合的标签:

// 先以纯文本形式获取RSS,避免jQuery自动解析出错
$.ajax({
  url: '你的目标RSS地址',
  dataType: 'text',
  success: function(rawRss) {
    // 补全常见的未闭合标签,可根据实际情况扩展规则
    var fixedRss = rawRss
      // 处理自闭合标签
      .replace(/<br>/g, '<br/>')
      .replace(/<img([^>]*)>/g, '<img$1/>')
      // 处理普通未闭合标签,比如假设<description>没闭合
      .replace(/<description>([\s\S]*?)(?=<\/item>)/g, '<description>$1</description>');
    
    // 转换为jQuery对象,正常操作DOM
    var $rssDoc = $(fixedRss);
    // 示例:获取第一个item的description内容
    var descContent = $rssDoc.find('item:first description').html();
    console.log(descContent);
  },
  error: function() {
    console.log('获取RSS失败');
  }
});

方案2:利用浏览器原生DOMParser容错解析

浏览器自带的DOMParser对不规范的HTML/XML有很强的容错性,会自动补全未闭合标签,比jQuery的解析更宽松:

$.ajax({
  url: '你的目标RSS地址',
  dataType: 'text',
  success: function(rawRss) {
    var parser = new DOMParser();
    // 用text/html模式解析,浏览器会自动修复标签
    var parsedDoc = parser.parseFromString(rawRss, 'text/html');
    
    // 把解析后的文档转为jQuery对象
    var $rss = $(parsedDoc);
    
    // 遍历所有item,获取内容
    $rss.find('item').each(function(index) {
      var title = $(this).find('title').text();
      var content = $(this).find('description').html();
      console.log(`第${index+1}条内容:`, title, content);
    });
  }
});

方案3:针对特定标签的精准修复

如果只有某个特定标签(比如自定义标签)未闭合,可以写个简单函数统计开放标签数量,补充对应的闭合标签:

// 自定义修复函数:针对指定标签补全闭合标签
function fixSpecificTag(rawStr, tagName) {
  const openTagReg = new RegExp(`<${tagName}>`, 'g');
  const closeTagReg = new RegExp(`</${tagName}>`, 'g');
  
  const openCount = (rawStr.match(openTagReg) || []).length;
  const closeCount = (rawStr.match(closeTagReg) || []).length;
  
  // 如果开放标签更多,补充缺失的闭合标签
  if (openCount > closeCount) {
    rawStr += `</${tagName}>`.repeat(openCount - closeCount);
  }
  return rawStr;
}

// 使用示例:修复未闭合的<content>标签
$.ajax({
  url: '你的目标RSS地址',
  dataType: 'text',
  success: function(rawRss) {
    var fixedRss = fixSpecificTag(rawRss, 'content');
    var $rss = $(fixedRss);
    // 后续正常操作即可
  }
});

另外要确认你的jQuery路径是正确的,比如页面里引入的是<script src="api/jquery.min.js"></script>,确保能正常加载jQuery,不然所有操作都没法执行。

内容的提问来源于stack exchange,提问作者Mehdi Bennis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:02:52