2014-12-02 194 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

嘗試用引用的foreach'的foreach($幀作爲&$幀)' – Justinas 2014-12-02 11:01:42

+0

感謝@Justinas您的快速反應,但它並沒有幫助。任何其他想法? – 2014-12-02 11:07:55

+0

當你打印出'if'裏面的東西時,它會顯示出來嗎? – Justinas 2014-12-02 11:13:26

回答

1

感謝所有留言反饋!

它不應該輸出任何內容,而是再次保存該文件。身份證當然是有定義的,但我忘了把它包括在我的問題中。這就是現在的工作:

$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 2014-12-02 15:43:21

+0

@silkfire我正在使用$ dom-> saveXML()而不是$ dom-> save()。而且我在加載XML文件時也使用了file_get_contents()。 – 2014-12-14 10:47:21

-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

我測試你的代碼,很明顯,我會得到一個錯誤,$id未定義。你試圖改變這一行:

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

這樣:

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

,當然還有,打印結果到屏幕上,你會用echo

echo $dom->saveXML();