60 foreach (
$source->childNodes as $node) {
61 if ($node->nodeType == XML_ELEMENT_NODE) {
62 $nodeName = $node->nodeName;
63 $nodePath = $basePath .
'/' . $nodeName;
65 $arrayKeyAttribute = $this->arrayNodeConfig->getAssocArrayKeyAttribute($nodePath);
66 $isNumericArrayNode = $this->arrayNodeConfig->isNumericArray($nodePath);
67 $isArrayNode = $isNumericArrayNode || $arrayKeyAttribute;
69 if (isset(
$value[$nodeName]) && !$isArrayNode) {
70 throw new \UnexpectedValueException(
71 "Node path '{$nodePath}' is not unique, but it has not been marked as array." 75 $nodeData = $this->
convert($node, $nodePath);
78 if ($isNumericArrayNode) {
79 $value[$nodeName][] = $nodeData;
80 }
elseif (isset($nodeData[$arrayKeyAttribute])) {
81 $arrayKeyValue = $nodeData[$arrayKeyAttribute];
82 $value[$nodeName][$arrayKeyValue] = $nodeData;
84 throw new \UnexpectedValueException(
85 "Array is expected to contain value for key '{$arrayKeyAttribute}'." 89 $value[$nodeName] = $nodeData;
91 }
elseif ($node->nodeType == XML_CDATA_SECTION_NODE
92 || ($node->nodeType == XML_TEXT_NODE && trim($node->nodeValue) !=
'')
120 protected function getNodeAttributes(\DOMNode $node)
126 if (
$attribute->nodeType == XML_ATTRIBUTE_NODE) {
elseif(isset( $params[ 'redirect_parent']))
__construct(ArrayNodeConfig $arrayNodeConfig)