/**
  * Node (DomXML) fetcher.
  * @param DOMXPath $node object
  * @param string $searchPattern
  * @param string $output
  *
  * @return null|string
  */
 protected function nodeFetch($node = '', $searchPattern = '', $output = 'nodeValue')
 {
     $result = null;
     if ('' != $node && '' != $searchPattern) {
         try {
             $ad_Doc = new DOMDocument();
             $cloned = $node->cloneNode(TRUE);
             $ad_Doc->appendChild($ad_Doc->importNode($cloned, True));
             $newXpath = new DOMXPath($ad_Doc);
             $ad_title_tag = $newXpath->evaluate($searchPattern);
             switch ($output) {
                 case 'byAttribute':
                     $result = $ad_title_tag;
                     break;
                 case '':
                 case 'nodeValue':
                 default:
                     if ($ad_title_tag->length) {
                         $result = trim($ad_title_tag->item(0)->nodeValue);
                     }
                     break;
             }
         } catch (Exception $e) {
             $this->setError($e->getMessage());
         }
     }
     return $result;
 }