SimpleXML – добавить новый узел, используя ранее объявленное пространство имен – как?

Я хотел бы добавить ребенка в очень конкретное место (поэтому я также использую DOM и не только simpleXML) для узла <domain:create> .

Я попытался использовать атрибут $ ns для конструкции simpleXML.

 $nsNode = new SimpleXMLElement('<domain:ns>', $options = 0, $ns='urn:ietf:params:xml:ns:domain-1.0'); //transform the target into dom object for manipulation $nodeRegistrantDom = dom_import_simplexml($nodeRegistrant); 

Но я получаю:

Предупреждение ввода-вывода: не удалось загрузить внешнюю сущность "<domain:ns>"

Я попытался зарегистрировать префикс после создания элемента, но после этого я не использую xpath, так что это была совершенно бесполезная попытка …

 //creates the simpleXML object node to be inserted. $nsNode = new SimpleXMLElement('<ns/>'); //this will not work, because we will not use xpath after it :s $nsNode->registerXPathNamespace('domain', 'urn:ietf:params:xml:ns:domain-1.0'); 

Поскольку xml загружается из файла, и этот файл, объявленный этим ns, может быть, мы должны извлечь его из этого файла?

Ниже приведено общее описание, так что мы можем лучше понять контекст: мы загружаем файл XML, который содержит общую структуру:

  $xmlObj = simplexml_load_file('EppCreateDomain.xml'); 

Мы возьмем элемент, который мы будем использовать в качестве цели:

 //grab the target. $nodeRegistrant = $xmlObj->command->create->children(self::OBJ_URI_DOMAIN)->create->registrant; //transform the target into a dom object for later manipulation $nodeRegistrantDom = dom_import_simplexml($nodeRegistrant); //we try to use simpleXML to create the node that we want to add after our target. $nsNode = new SimpleXMLElement('<domain:ns>'); //grabs the node and all his children (none in this case), by importing the node we want to add, //into the root object element that contains the <domain:registrant> node. $nsNodeDom = $nodeRegistrantDom->ownerDocument->importNode(dom_import_simplexml($nsNode), true); $nodeRegistrantDom->parentNode->insertBefore($nsNodeDom, $nodeRegistrantDom->nextSibling); $simpleXmlNsNode = simplexml_import_dom($nsNodeDom); 

Теперь у нас есть наш узел, расположенный на нужном месте. И преобразованный в simpleXML, поэтому мы теперь можем легко добавить некоторых детей и заполнить остальную часть xml-файла.

 $hostAttr = $simpleXmlNsNode->addChild('domain:hostAttr'); $hostName = $hostAttr->addChild('domain:hostName'); 

Пожалуйста, совет, MEM