Index: modules/aggregator/aggregator.parser.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.parser.inc,v
retrieving revision 1.10
diff -u -p -r1.10 aggregator.parser.inc
--- modules/aggregator/aggregator.parser.inc	24 Jul 2010 17:42:22 -0000	1.10
+++ modules/aggregator/aggregator.parser.inc	15 Nov 2010 04:22:59 -0000
@@ -125,7 +125,11 @@ function aggregator_parse_feed(&$data, $
     else {
       $item['link'] = $feed->link;
     }
-    $item['guid'] = isset($item['guid']) ? $item['guid'] : '';
+
+    // Atom feeds have an ID tag instead of a GUID tag.
+    if (!isset($item['guid'])) {
+      $item['guid'] = isset($item['id']) ? $item['id'] : '';
+    }
 
     // Atom feeds have a content and/or summary tag instead of a description tag.
     if (!empty($item['content:encoded'])) {
Index: modules/aggregator/aggregator.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.test,v
retrieving revision 1.47
diff -u -p -r1.47 aggregator.test
--- modules/aggregator/aggregator.test	25 Oct 2010 15:51:21 -0000	1.47
+++ modules/aggregator/aggregator.test	15 Nov 2010 04:23:00 -0000
@@ -854,6 +854,7 @@ class FeedParserTestCase extends Aggrega
     $this->assertText('Atom-Powered Robots Run Amok');
     $this->assertLinkByHref('http://example.org/2003/12/13/atom03');
     $this->assertText('Some text.');
+    $this->assertEqual('urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a', db_query('SELECT guid FROM {aggregator_item} WHERE link = :link', array(':link' => 'http://example.org/2003/12/13/atom03'))->fetchField(), 'Atom entry id element is parsed correctly.');
   }
 }
 
