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;
}