2014-10-28 4 views
-2

у меня есть этот скрипт:XML заменить содержимое на другие

$dom=new DOMDocument(); 
$xml='../assets/local.xml'; 
$dom->load($xml); 
$cdata=$dom->createCDATASection('95.55.4.2'); 
foreach ($dom->getElementsByTagName('connection') as $item) { 
    $item->getElementsByTagName('host')->item(0)->appendChild($cdata); 
} 
$dom->save($xml); 

И мой XML является:

<connection> 
<host>localhost</host> 
</connection> 

и мне нужно изменить "локальный" на "95.55.4.2" с CDATA. Я стараюсь это сума, но он не так ... что это результат:

<connection> 
<host>95.55.4.2localhost</host> 
</connection> 

Любой может мне помочь, пожалуйста

спасибо !!

ответ

1

Вы можете использовать nodeValue, чтобы установить значение узла непосредственно:

$dom=new DOMDocument(); 
$xml='../assets/local.xml'; 
$dom->load($xml); 

# access the element directly: it's the first "host" node in the doc: 
$dom->getElementsByTagName('host')->item(0)->nodeValue = '95.55.4.2'; 

$dom->save($xml); 

Использование appendChild добавит ваш CDATA узел существующих дочерних узлов, поэтому вы получаете сочетание старых и новых строк.

Смежные вопросы