Ok… I still have doubts. 
But we can achieve the intend result by doing:
//grab the target.
$nodePeriod = $xmlObj->command->create->children(self::OBJ_URI_DOMAIN)->create->period;
//transform the target into dom object for manipulation
$nodePeriodDom = dom_import_simplexml($nodePeriod);
//do not create a node using simpleXML, and then importing to DOM. Using DOM instead:
$nsNodeDom = $nodePeriodDom->ownerDocument->createElement('domain:ns');
//the same node placed on a specific position:
$nsNodeDom2 = $nodePeriodDom->parentNode->insertBefore($nsNodeDom, $nodePeriodDom->nextSibling);
//grab that node, and bring it back to a simpleXML so that, simply :) we can add children
$simpleXmlNsNode = simplexml_import_dom($nsNodeDom2);
//add childrens:
$hostAttr = $simpleXmlNsNode->addChild('domain:hostAttr', null, self::OBJ_URI_DOMAIN);
$hostName = $hostAttr->addChild('domain:hostName', $nsNome);
$hostAddr = $hostAttr->addChild('domain:hostAddr', $nsEndereco);
$hostAddr->addAttribute('ip', 'v4');
so, here we are creating but, if we do only this, he doesn’t get placed anywhere?
$nsNodeDom = $nodePeriodDom->ownerDocument->createElement('domain:ns');
I have declared, again, the namespace for this domain prefix, otherwise, it get’s ignored. why?
$hostAttr = $simpleXmlNsNode->addChild('domain:hostAttr', null, self::OBJ_URI_DOMAIN);
those don’t need the Namespace address argument, they will automagicly get it. Why?
$hostName = $hostAttr->addChild('domain:hostName', $nsNome);
note that I have added the value directly using addChild attribute.
Because if I do something like this:
$xmlObj->command->create->children(self::OBJ_URI_DOMAIN)->create->ns->hostAttr->hostName = $nsNome;
I get ANOTHER node added at the end. Why?
(: