$content = $filesystem->read($object['path']); $xmp_data_start = strpos($content, ''); $xmp_length = $xmp_data_end - $xmp_data_start; $xmp_data = substr($content, $xmp_data_start, $xmp_length + 12); $document = new DOMDocument(); $document->loadXml($xmp_data); $xpath = new DOMXpath($document); /** * most likely a bit hackish.. thats how I do get all namespaces... */ $results = preg_match_all('_xmlns:([A-Za-z]+)="(.*)"_U', $xmp_data, $matches); foreach ($matches[1] as $key => $alias) { // echo "registering $alias for ".$matches[2][$key]."\n"; $xpath->registerNamespace($alias, $matches[2][$key]); } $elements = $xpath->query("//*[name()='dc:subject']"); $tags = []; if (!is_null($elements)) { foreach ($elements as $element) { $nodes = $element->childNodes; foreach ($nodes as $node) { $value = trim($node->nodeValue); if (!empty($value)) { $tags[] = $value; } } } } var_dump($tags);