src/SimpleDOM.php
public function addMissing($objStructure, &$objElement)
    {
        // Set missing attributes
        foreach ($objStructure->attributes() as $strName => $objAttribute) {
            if (!isset($objElement->attributes()->$strName)) {
                $objElement->addAttribute($strName, (string)$objAttribute);
            }
        }

        // Add missing nodes
        foreach ($objStructure->children() as $strName => $varNode) {
            if (count($varNode) > 0) {
                // Due to a PHP bug clone does not work
                $objNode = $objElement->addChild($strName);
                $this->addMissing($varNode, $objNode);
            } else {
                $objElement->addChild($strName, (string)$varNode);
            }
        }
    }
public function addMissing($objStructure, &$objElement)
    {
        // Set missing attributes
        foreach ($objStructure->attributes() as $strName => $objAttribute) {
            if (!isset($objElement->attributes()->$strName)) {
                $objElement->addAttribute($strName, (string)$objAttribute);
            }
        }

        // Add missing nodes
        foreach ($objStructure->children() as $strName => $varNode) {
            if (count($varNode) > 0) {
                // Due to a PHP bug clone does not work
                $objNode = $objElement->addChild($strName);
                $this->addMissing($varNode, $objNode);
            } else {
                $objElement->addChild($strName, (string)$varNode);
            }
        }
    }
Add missing nodes and attributes to an element from a strucure element
Had to be written like this because clone does not work on SimpleXmlElements

@param $objStructure
@param $objElement