Создайте заголовок WS-Security с помощью SimpleXML?

Я хочу создать заголовок WSS для аутентификации на защищенных веб-сервисах.

Я могу сделать это с помощью уродливого:

$auth = ' <wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsu:Timestamp wsu:Id="Timestamp-28" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsu:Created>' . $timestamp . '</wsu:Created> <wsu:Expires>' . $timestampExpires . '</wsu:Expires> </wsu:Timestamp> <wsse:UsernameToken wsu:Id="UsernameToken-27" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:Username>' . $user . '</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">' . $passdigest . '</wsse:Password> <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">' . $encodedNonce . '</wsse:Nonce> <wsu:Created>' . $timestamp . '</wsu:Created> </wsse:UsernameToken> </wsse:Security>'; 

Теперь я пытаюсь сделать это чище, используя SimpleXML.

Но если я попытаюсь сделать простой:

  $xml = new SimpleXMLElement('<wsse:Security/>', 0, false, 'wsse'); 

Я получил :

warning: SimpleXMLElement :: __ construct () [simplexmlelement .– construct]: ошибка пространства имен: префикс пространства имен wsse on Security не определен в

Я думаю, что я что-то пропустил, чтобы создать xmls с именами, не могли бы вы дать мне несколько советов?

Solutions Collecting From Web of "Создайте заголовок WS-Security с помощью SimpleXML?"

Я нашел способ решить свою проблему:

 $root = new SimpleXMLElement('<root/>'); $security = $root->addChild('wsse:Security', 'test', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'); $root->registerXPathNamespace('wsse', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'); $auth = $root->xpath('/root/wsse:Security'); echo htmlentities($auth[0]->asXML()); 

Дисплеи:

 <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">test</wsse:Security> 

Кроме того, в моем XML есть ошибка, я поместил SOAP-ENV:mustUnderstand="1" но я никогда не определяю пространство имен SOAP-ENV .