SimpleXML имеет необычную причуду, когда префиксы пространства имен отфильтровываются из корневого элемента.Я не уверен, почему это происходит.
Тем не менее, я использовал обходной путь, чтобы в основном префикс префикса, так что анализатор удаляет только первые и оставляет второй
$xmlTest = new SimpleXMLElement('<xmlns:ws:Test></xmlns:ws:Test>', LIBXML_NOERROR, false, 'ws', true);
$xmlTest->addAttribute('xmlns:xmlns:ws', 'http://url.to.namespace');
$xmlTest->addAttribute('xmlns:xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
Кажется, это работает для меня, хотя мне интересно понять, почему SimpleXML делает это точно.
Источник