2016-03-15 36 views
0

我想要降低當前值超過一定數量但看起來無法完成的節點的值。降低超過特定值的XML節點值

沒有錯誤發生,但我想影響的節點沒有被更新。

會有人能夠指出什麼是錯的以下內容:

$xml = '<?xml version="1.0"?> 
<property> 
<edited>true</edited> 
<images> 
<image> 
<is_required><![CDATA[true]]></is_required> 
<sorted_number><![CDATA[1]]></sorted_number> 
</image> 

<image> 
<is_required><![CDATA[true]]></is_required> 
<sorted_number><![CDATA[2]]></sorted_number> 
</image> 

<image> 
<is_required><![CDATA[true]]></is_required> 
<sorted_number><![CDATA[4]]></sorted_number> 
</image> 

<image> 
<is_required><![CDATA[true]]></is_required> 
<sorted_number><![CDATA[5]]></sorted_number> 
</image> 

</images> 
</property>'; 

$sorted_target_number = 3; 

foreach($xml->xpath('/property/images/image') as $tempImgNode){   
$s_number = $tempImgNode->sorted_number; 
if ($s_number > $sorted_target_number) { 
--$s_number; 
}  
}; 

因此,與4和5 sorted_numbers圖像節點將改爲3和4

謝謝,

馬克

回答

1

您發佈的代碼未能正常運行。沒有創建對象SimpleXml

$xml = simplexml_load_string($xml); 

做減法,使用自參考技術

$s_number[0] = $s_number - 1; 

它允許SimpleXml元素以及刪除更新:unset($node[0])。查看更多:https://stackoverflow.com/a/16062633/2016456

看到它的工作:https://eval.in/536643

以上操作不留CDATA雖然。如果需要,您需要採取一些額外步驟來處理,例如How to write CDATA using SimpleXmlElement?或使用DOM

+0

謝謝。這讓我越過障礙;) – crooksy88