Get image url from media:content in RSS XML feed
in Using jQuery Plugins
•
9 years ago
I am trying to retrieve the images (along with other content) from media:content
for each post in an RSS feed: http://bits.blogs.nytimes.com/feed/
I have tried several variations and I am ending up with <img src="undefined" alt="image">
This is what the log is saying TypeError: 'undefined' is not an object (evaluating '$item.find('media\\:content').attr('url').text')
Here is an example of the XML from the RSS feed (I am trying to grab what is in url="this value")<media:content url="http://graphics8.nytimes.com/images/2011/11/30/technology/bits-daily-report/bits-daily-report-thumbStandard.jpg" medium="image" width="75" height="75"></media:content>
I tried this link (along with many others) jQuery XML parsing how to get element attribute but I am still getting errors.
There is a PHP file as well (see at bottom) but I don't think that it is the issue.
Here is the HTML with jQuery embeded (pulled from https://forum.jquery.com/topic/rssparsing-images-27-8-2010).
Thank you for all solutions, pointers, and Suggestions. I am hitting a roadblock right now.
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>Your Site Title</title>
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- function get_rss_feed() {
- // Using CNN's RSS Feed as an example
- var rssUrl = 'http://bits.blogs.nytimes.com/feed/';
- //clear the content in the div for the next feed.
- $("#feedContent").empty();
- //use the JQuery get to grab the URL from the selected item, put the results in to an argument for parsing in the inline function called when the feed retrieval is complete
- $.get('rss.php?url='+rssUrl, function(d) {
- //find each 'item' in the file and parse it
- $(d).find('item').each(function() {
- //name the current found item this for this particular loop run
- var $item = $(this);
- // grab the post title
- var title = $item.find('title').text();
- // grab the post's URL
- var link = $item.find('link').text();
- // next, the description
- var description = $item.find('description').text();
- //don't forget the pubdate
- var pubDate = $item.find('pubDate').text();
- var media = $item.find('media\\:content').attr('url').text();
- // now create a var 'html' to store the markup we're using to output the feed to the browser window
- var html = "<div class=\"entry\"><h2 class=\"postTitle\">" + title + "<\/h2>";
- html += "<em class=\"date\">" + pubDate + "</em>";
- html += "<p class=\"description\">" + description + "</p>";
- html += "<img src=\"" + media + "\" alt=\"image\"/>";
- html += "<a href=\"" + link + "\" target=\"_blank\">Read More >><\/a><\/div>";
- //Send Results to a div
- $('#rss').append($(html));
- });
- });
- };
- get_rss_feed();
- });
- </script>
- </head>
- <body>
- <h1>RSS TEST</h1>
- <!-- Your RSS DIV -->
- <div id="rss"></div>
- </body>
- </html>
Here is the Associated PHP:
<?php
ob_start();
$curl = curl_init($_GET['url']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$xml = curl_exec($curl);
header("Content-Type: text/xml");
echo $xml; // Results
$output = ob_get_clean();
curl_close($curl);
echo $output;
ob_end_flush();
?>
1