使用SimpleXML生成XML文件很简单,示例代码如下:
$xml = new SimpleXMLElement('<books />');
$book = $xml->addChild('book');
$book->addChild('title', '拖延心理学');
$book->addChild('isbn', '9787300113906');
$rating = $book->addChild('rating', 5);
$rating->addAttribute('type', 'stars');
// 添加其他节点
echo $xml->asXML();
输入结果如下:
<?xml version="1.0"?>
<books><book><title>拖延心理学</title><isbn>9787300113906</isbn><rating type="stars">5</rating></book></books>
请注意输出的XML内容,声明中没有encoding="UTF-8"
,汉字也被转换为对应的UTF-8编码。
如何解决上面遇到的问题呢?
虽然SimpleXML没有提供设置encoding的接口,但是可以通过以下途径解决:
使用如下代码初始化SimpleXMLElement对象:
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><books />');
PS:网上有建议说在最后生成字符串时使用$xml = str_replace('<?xml version="1.0"?>', '<?xml version="1.0" encoding="UTF-8"?>', $xml);
命令进行替换实现添加encoding的目的,但是这种方法无法解决汉字转为UTF-8编码的问题。