diff --git a/wordpress_item.inc b/wordpress_item.inc
index 4367a07..d06f4e9 100644
--- a/wordpress_item.inc
+++ b/wordpress_item.inc
@@ -78,22 +78,26 @@ class WordPressItemSource extends WordPressSource {
    */
   protected function populateRow($item) {
     // Pull non-namespaced items
-    foreach ($item as $name => $value) {
-      $this->currentRow->$name = (string)$value;
+    foreach ($item as $name => $child) {
+      $this->extractFromElement($this->currentRow, $name, $child);
     }
     // Now check each namespace
     $namespaces = $item->getNameSpaces(TRUE);
 
-    foreach ($namespaces as $ns => $nsuri) {
-      $item_ns = $item->children($namespaces[$ns]);
-      foreach ($item_ns as $name => $value) {
+    $postmeta_count = 0;
+    foreach ($namespaces as $namespace => $nsuri) {
+      foreach ($item->children($namespaces[$namespace]) as $name => $child) {
         // Special-case content:encoded and excerpt:encoded, which otherwise
         // would both be saved as "encoded"
         if ($name == 'encoded') {
-          $this->currentRow->$ns = (string)$value;
+          $this->extractFromElement($this->currentRow, $namespace, $child, $namespaces[$namespace]);
+        }
+        // There's many of these, don't clobber the last one.
+        elseif ($name == 'postmeta') {
+          $this->extractFromElement($this->currentRow->postmeta, $postmeta_count ++, $child, $namespaces[$namespace]);
         }
         else {
-          $this->currentRow->$name = (string)$value;
+          $this->extractFromElement($this->currentRow, $name, $child, $namespace);
         }
       }
     }
@@ -135,6 +139,28 @@ class WordPressItemSource extends WordPressSource {
     $this->currentKey = array($this->currentRow->post_id);
     return TRUE;
   }
+
+  /**
+   * Recursively extract data from a SimpleXML element into $this->currentRow.
+   *
+   * @param mixed $destination
+   *  The object that we are attaching to.
+   * @param scalar $property
+   *  The name of the property to create.
+   * @param SimpleXMLElement $value
+   * @param namespace = NULL
+   *  The namespace that we are working with (if any).
+   */
+  protected function extractFromElement(&$destination, $property, SimpleXMLElement $value, $namespace = NULL) {
+    if ($value->count()) {
+      foreach ($value->children($namespace) as $name => $child) {
+        $this->extractFromElement($destination->$property, $name, $child, $namespace);
+      }
+    }
+    else {
+      $destination->$property = (string) $value;
+    }
+  }
 }
 
 /**
