使用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编码的问题。
你的第一个输出结果有问题,根本不是那种输出结果。
查看源码就知道了