eZ\Publish\Core\REST\Common\Input\Handler\Xml::parseFieldTypeValues PHP Method

parseFieldTypeValues() protected method

Parses a node list of elements.
protected parseFieldTypeValues ( DOMNodeList $valueNodes ) : array | string
$valueNodes DOMNodeList
return array | string
    protected function parseFieldTypeValues(\DOMNodeList $valueNodes)
    {
        $resultValues = array();
        $resultString = '';
        foreach ($valueNodes as $valueNode) {
            switch ($valueNode->nodeType) {
                case XML_ELEMENT_NODE:
                    if ($valueNode->tagName !== 'value') {
                        throw new \RuntimeException(sprintf('Invalid value tag: <%s>.', $valueNode->tagName));
                    }
                    $parsedValue = $this->parseFieldTypeValues($valueNode->childNodes);
                    if ($valueNode->hasAttribute('key')) {
                        $resultValues[$valueNode->getAttribute('key')] = $parsedValue;
                    } else {
                        $resultValues[] = $parsedValue;
                    }
                    break;
                case XML_TEXT_NODE:
                    $resultString .= $valueNode->wholeText;
                    break;
                case XML_CDATA_SECTION_NODE:
                    $resultString .= $valueNode->data;
                    break;
            }
        }
        $resultString = trim($resultString);
        if ($resultString !== '') {
            return $this->castScalarValue($resultString);
        }
        return $resultValues;
    }