SimpleXMLElement 不會自動轉換特殊字元, 也不會自動加上 CDATA
所以內容有特殊字元時,若沒先處理再傳給 SimpleXMLElement,便會出錯。
若想使用加上 CDATA 的方式,可如以下幫 SimpleXMLElement 加上 addCData 功能。
class SimpleXMLExtended extends \SimpleXMLElement { /** * 將節點的值加上 CDATA * @param string $cdata_text 節點的值 */ public function addCData($cdata_text) { $node = dom_import_simplexml($this); $no = $node->ownerDocument; $node->appendChild($no->createCDATASection($cdata_text)); } }使用
$sxe = new \SimpleXMLExtended('<xyz></xyz>'); $sxe->addChild('aa')->addCData('test'); $xml = $sxe->asXML(); //輸出結果 //<?xml version="1.0"?> //<xyz><aa><![CDATA[test]]></aa></xyz>
參考:
php - How to write CDATA using SimpleXmlElement? - Stack Overflow
沒有留言:
張貼留言