/**
  * Build item
  *
  * @access public
  * @return DOMElement
  */
 public function build()
 {
     $this->itemElement = $this->feedBuilder->getDocument()->createElement('item');
     $this->helper = new Rss20Helper($this->feedBuilder->getDocument());
     if (!empty($this->itemId)) {
         $guid = $this->feedBuilder->getDocument()->createElement('guid');
         $guid->setAttribute('isPermaLink', 'false');
         $guid->appendChild($this->feedBuilder->getDocument()->createTextNode($this->itemId));
         $this->itemElement->appendChild($guid);
     } else {
         $guid = $this->feedBuilder->getDocument()->createElement('guid');
         $guid->setAttribute('isPermaLink', 'true');
         $guid->appendChild($this->feedBuilder->getDocument()->createTextNode($this->itemUrl));
         $this->itemElement->appendChild($guid);
     }
     $this->helper->buildTitle($this->itemElement, $this->itemTitle)->buildLink($this->itemElement, $this->itemUrl)->buildDate($this->itemElement, $this->itemPublishedDate)->buildAuthor($this->itemElement, 'author', $this->authorName, $this->authorEmail);
     if (!empty($this->itemSummary)) {
         $this->helper->buildNode($this->itemElement, 'description', $this->itemSummary);
     }
     if (!empty($this->itemContent)) {
         $node = $this->feedBuilder->getDocument()->createElement('content:encoded');
         $node->appendChild($this->feedBuilder->getDocument()->createCDATASection($this->itemContent));
         $this->itemElement->appendChild($node);
     }
     return $this->itemElement;
 }
 /**
  * Build feed
  *
  * @access public
  * @param  string $filename
  * @return string
  */
 public function build($filename = '')
 {
     $this->helper = new Rss20Helper($this->getDocument());
     $this->rssElement = $this->getDocument()->createElement('rss');
     $this->rssElement->setAttribute('version', '2.0');
     $this->rssElement->setAttributeNodeNS(new DomAttr('xmlns:content', 'http://purl.org/rss/1.0/modules/content/'));
     $this->rssElement->setAttributeNodeNS(new DomAttr('xmlns:atom', 'http://www.w3.org/2005/Atom'));
     $this->channelElement = $this->getDocument()->createElement('channel');
     $this->helper->buildNode($this->channelElement, 'generator', 'PicoFeed (https://github.com/fguillot/picoFeed)')->buildTitle($this->channelElement, $this->feedTitle)->buildNode($this->channelElement, 'description', $this->feedTitle)->buildDate($this->channelElement, $this->feedDate)->buildAuthor($this->channelElement, 'webMaster', $this->authorName, $this->authorEmail)->buildLink($this->channelElement, $this->siteUrl);
     $link = $this->getDocument()->createElement('atom:link');
     $link->setAttribute('href', $this->feedUrl);
     $link->setAttribute('rel', 'self');
     $link->setAttribute('type', 'application/rss+xml');
     $this->channelElement->appendChild($link);
     foreach ($this->items as $item) {
         $this->channelElement->appendChild($item->build());
     }
     $this->rssElement->appendChild($this->channelElement);
     $this->getDocument()->appendChild($this->rssElement);
     if ($filename !== '') {
         $this->getDocument()->save($filename);
     }
     return $this->getDocument()->saveXML();
 }