getElementsByTagName('type'); /** @var \DOMNode $type */ foreach ($types as $type) { $typeConfig = []; foreach ($type->attributes as $attribute) { $typeConfig[$attribute->nodeName] = $attribute->nodeValue; } /** @var \DOMNode $childNode */ foreach ($type->childNodes as $childNode) { if ($childNode->nodeType == XML_ELEMENT_NODE || ($childNode->nodeType == XML_CDATA_SECTION_NODE || $childNode->nodeType == XML_TEXT_NODE && trim( $childNode->nodeValue ) != '') ) { $typeConfig[$childNode->nodeName] = $childNode->nodeValue; } } $output[$type->attributes->getNamedItem('name')->nodeValue] = $typeConfig; } return ['types' => $output]; } }