PHPExiftool\RDFParser::readNodeValue PHP Method

readNodeValue() protected method

Read the node value, decode it if needed
protected readNodeValue ( DOMNode $node, PHPExiftool\Driver\TagInterface $tag = null ) : PHPExiftool\Driver\Value\ValueInterface
$node DOMNode The node to read
$tag PHPExiftool\Driver\TagInterface The tag associated
return PHPExiftool\Driver\Value\ValueInterface The value extracted
    protected function readNodeValue(\DOMNode $node, TagInterface $tag = null)
    {
        $nodeName = $this->normalize($node->nodeName);
        if (is_null($tag) && TagFactory::hasFromRDFTagname($nodeName)) {
            $tag = TagFactory::getFromRDFTagname($nodeName);
        }
        if ($node->getElementsByTagNameNS(self::RDF_NAMESPACE, 'Bag')->length > 0) {
            $ret = array();
            foreach ($node->getElementsByTagNameNS(self::RDF_NAMESPACE, 'li') as $nodeElement) {
                $ret[] = $nodeElement->nodeValue;
            }
            if (is_null($tag) || $tag->isMulti()) {
                return new Multi($ret);
            } else {
                return new Mono(implode(' ', $ret));
            }
        } elseif ($node->getAttribute('rdf:datatype') === 'http://www.w3.org/2001/XMLSchema#base64Binary') {
            if (is_null($tag) || $tag->isBinary()) {
                return Binary::loadFromBase64(trim($node->nodeValue));
            } else {
                return new Mono(base64_decode(trim($node->nodeValue)));
            }
        } else {
            if (!is_null($tag) && $tag->isMulti()) {
                return new Multi($node->nodeValue);
            } else {
                return new Mono($node->nodeValue);
            }
        }
    }