public function extractExtraNodes(\DOMNode $child, array &$options)
{
$key = $child->attributes->getNamedItem('key');
$key = $key ? $key->nodeValue : ('item' === $child->nodeName ? null : $child->nodeName);
$valueText = null;
$valueNodes = array();
foreach ($child->childNodes as $element) {
if ('#text' === $element->nodeName) {
$valueText = $element->nodeValue;
} else {
if ('#' !== substr($element->nodeName, 0, 1)) {
$this->extractExtraNodes($element, $valueNodes);
}
}
}
$value = 0 == count($valueNodes) ? $valueText : $valueNodes;
if ($key) {
$options[$key] = $value;
} else {
$options[] = $value;
}
}