2016-07-01 3 views
0

Мне нужно изменить значение свойства вложенного пространства имен в XML-документе, прежде чем я отправлю его в службу EPP.XML Изменение значения свойства namespace

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> 
    <command> 
    <info> 
     <host:info xmlns:host="urn:ietf:params:xml:ns:host-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:host-1.0 host-1.0.xsd"> 
     <host:name>ns1.example.test.example.com</host:name> 
     </host:info> 
    </info> 
    <clTRID>NORID-14373-1207137695427775</clTRID> 
    </command> 
</epp> 

В приведенном выше XML мне нужно изменить значение элемента host: name. Я использую PHP simplexml_load_string, чтобы сначала изменить значения из схемы XML, как показано ниже.

$xml = simplexml_load_string(file_get_contents($fn)); 
$xml->command->clTRID = GUID(); // This works perfectly 
$xml->command->info->name = 'somename'; // Does not work :) 

Каков правильный способ сделать это?

ответ

0

Используйте следующий код

Примечание Я гулкие данные для справки о том, как использовать его

echo $xml->command->info->children('host', true)->info->name; 

Всего простого код, который я попытался

$xmls = '<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> 
    <command> 
    <info> 
     <host:info xmlns:host="urn:ietf:params:xml:ns:host-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:host-1.0 host-1.0.xsd"> 
     <host:name>ns1.example.test.example.com</host:name> 
     </host:info> 
    </info> 
    <clTRID>NORID-14373-1207137695427775</clTRID> 
    </command> 
</epp>'; 

$xml = simplexml_load_string($xmls); 
$xml->command->clTRID = 'something'; // This works perfectly 
echo $xml->command->info->children('host', true)->info->name; 

$xml->command->info->children('host', true)->info->name = 'some new name'; 
echo $xml->command->info->children('host', true)->info->name; 
Смежные вопросы