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
沒有留言:
張貼留言