【问题标题】:How to remove HTML tags from RSS feed?如何从 RSS 提要中删除 HTML 标签?
【发布时间】:2014-12-22 03:31:48
【问题描述】:

我正在使用Google Feed APItumblr feed 中提取博客条目。

我已经能够提取内容,但是输出带有 html 标签:

<p>I remember one day asking one of my mentors James if he ever got nervous around people. James replied, “Only when I need something from them.”</p>

代码很简单,如下:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
 <script type="text/javascript">
google.load("feeds", "1");

 function initialize() {
   var feed = new google.feeds.Feed("http://adriennetran.tumblr.com/rss");
   feed.load(function(result) {

     if (!result.error) {
       var container = document.getElementById("feed");

       for (var i = 0; i < result.feed.entries.length; i++) {
         var entry = result.feed.entries[i];
         window.content = document.createTextNode(entry.content);
         container.appendChild(content);
       }
     }
   });
 }


 google.setOnLoadCallback(initialize);

 </script>

我尝试编写一个函数来删除以&lt; 开头的所有内容:

content_array = content.split(" ");

for (i=0; i < content_array.length; i++){
    if ((content_array[i].split(""))[0] == "<"){
      content_array.splice(i, 1);
    }
}

content2 = content_array.toString();

但我收到了 Uncaught TypeError: undefined is not a function 错误,因为 contentobject 而不是 string,因此我无法调用 content.split(" ")

我试过转换成字符串,但这是控制台的输出

typeof(content)
> "object"

c2 = content.toString()
> "[object Text]"

有人对如何操作从 RSS 检索到的元素有任何想法吗?

【问题讨论】:

  • 为了提供进一步的服务,您能提供一个 JSfiddle 吗?

标签: javascript rss


【解决方案1】:

让我们看看

var regExString = /(<([^>]+)>)/ig; //create reg ex and let it loop (g)
contentString = content.textContent // get text from node (no longer an object but string.

contentString = contentString.replace(regExString, "") //find all tags and delete them.

【讨论】:

  • 好主意!我试过了,但是 content.toString 只是作为输出产生:“object” WOW 这是一个更容易的 .replace 标记,虽然比我写的那个长函数。
  • 要清楚。这是输出:typeof(content) "object" c2 = content.toString() "[object Text]"
  • @Aspen 更新了我的代码。该对象似乎是一个文本节点。 node.textContent 应该会起作用。
  • 我相信他是对的。只需将entry.content 更改为entry.content.textContent。这也应该在此过程中删除您的 HTML 标记。是吗?
  • @Makaze 不,它没有。由于它是一个文本节点,它会被识别为带有 HTML 的纯文本。
【解决方案2】:

如果您的页面中包含 jQuery,您可以使用从您的提要收到的 HTML 创建一个节点并从 HTML 中获取文本,如下所示:

var html = '<p>I remember one day asking one of my mentors James if he ever got nervous around people. James replied, “Only when I need something from them.”</p>';
var text = $(html).text(); // This gets the text from any HTML code and leaves out the tags

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多