使用utf8编码将sql导出到xml

时间:2013-08-25 16:00:52

标签: sql xml encoding

我尝试通过以utf8编码提取sql表值来找到解决方案,但没有运气。 下面的代码导出一个名为“test.xml”但没有编码的正确XML文件。 有什么建议吗?

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "admin";
$dbname = "My_DB";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
$sql = "SELECT product_id, model, image  FROM product";
$q = mysql_query($sql)or die(mysql_error()); 


$xml = "<products>";
while($r = mysql_fetch_array($q)){

  $xml .= "<product>";

 $xml .= "<id>";  
 $xml .= "<![CDATA[".$r["product_id"]."]]>";
 $xml .= "</id>";
 $xml .= "<name><![CDATA[" . $r["model"] . "]]></name>";
 $xml .= "<image>".$r['image']."</image>";   
 $xml .= "</product>";  
}

$xml .= "</products>";
$sxe = new SimpleXMLElement($xml);
$sxe->asXML("test.xml");

?>

1 个答案:

答案 0 :(得分:0)

您在这里做的是在变量中添加所有数据,然后将其输出到文件中。为什么不尝试按照自己的意愿格式化XML文件(而不是最后只使用SimpleXMLElement?我的意思是这样的:

[...]
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$xml .= "<products>";
while($r = mysql_fetch_array($q)){

  $xml .= "<product>";

 $xml .= "<id>";  
 $xml .= "<![CDATA[".$r["product_id"]."]]>";
 $xml .= "</id>";
 $xml .= "<name><![CDATA[" . $r["model"] . "]]></name>";
 $xml .= "<image>".$r['image']."</image>";   
 $xml .= "</product>";  
}

$xml .= "</products>";

echo $xml;

这将导致您自己创建的XML文件。只是说因为你没有一直使用SimpleXMLElement,而是手动添加XML元素和属性。您可以查看here,了解您可以构建文件的其他方式!

希望它有所帮助!