我尝试通过以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");
?>
答案 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,了解您可以构建文件的其他方式!
希望它有所帮助!