2014-12-02 2 views
1

Я пробую следующее без успеха. Любой, кто может помочь мне узнать, почему атрибут imageId не изменен?Обновить атрибут узла XML

$dom = new DOMDocument; 
$dom->loadXML($appCom_file_name); 
$frames = $dom->getElementsByTagName('frame'); 
foreach ($frames as $frame) { 
    if ($frame->getAttribute('imageId') == '') { 
     $frame->setAttribute('imageId', $id); 
    } 
} 

$dom->saveXML(); 

источник XML:

<template> 
    <appCom> 
     <page> 
      <defaultValues> 
       <frame id="frame_01_0" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" /> 
       <frame id="frame_02_0" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" /> 
       <frame id="frame_03_0" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" /> 
      </defaultValues> 
     </page> 
     <page> 
      <defaultValues> 
       <frame id="frame_01_1" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" /> 
       <frame id="frame_02_1" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" /> 
       <frame id="frame_03_1" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" /> 
      </defaultValues> 
     </page> 
    </appCom> 
</template> 
+0

Попробуйте с ссылками Еогеасп 'Еогеасп ($ кадров как и $ кадр)' – Justinas

+0

Спасибо @Justinas за быстрый ответ, но это не помогло. Любая другая идея? –

+0

И когда вы распечатываете что-то внутри этого 'if', оно отображается? – Justinas

ответ

1

Спасибо всем FEEBACK!

Он не должен выводить ничего, кроме сохранения файла снова. ID был определен, но я забыл включить его в мой вопрос. Это работает сейчас:

$id = 1; 

$dom = new DOMDocument; 
$dom->loadXML(file_get_contents($appCom_file_name)); 
$frames = $dom->getElementsByTagName('frame'); 
foreach ($frames as $frame) { 
    if ($frame->getAttribute('imageId') == '') { 
     $frame->setAttribute('imageId', $id); 
    } 
} 

$dom->save($appCom_file_name); 
+0

Какая разница в коде? – silkfire

+0

@silkfire Я использовал $ dom-> saveXML() вместо $ dom-> save(). И я также использую file_get_contents() при загрузке XML-файла. –

-1

Я думаю, вы должны использовать saveXML с Parametr ... Вот мой код для вдохновения:

$dom = new DOMDocument(); 
$dom->loadXML($datas); 

$svg = $dom->getElementsByTagName('svg');       
$resize = $this->resize(452, 480, $res); 
$svg->item(0)->setAttribute('width', $resize['w']); 
$svg->item(0)->setAttribute('height', $resize['h']); 
$datas = '<?xml version="1.0" encoding="UTF-8" tandalone="no"?>'.$dom->saveXML($svg->item(0)); 
1

Я проверил ваш код и, очевидно, я 'm получает ошибку, что $id не определен. Пытались ли вы изменить эту строку:

$frame->setAttribute('imageId', $id); 

к этому:

$frame->setAttribute('imageId', $frame->getAttribute('id')); 

?

И, конечно же, для распечатки результатов на экране вы будете использовать echo:

echo $dom->saveXML();