0

我尝试通过以 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");

?>
4

1 回答 1

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 元素和属性。你可以看看这里,看看你还能如何构建你的文件!

希望能帮助到你!

于 2013-08-25T17:22:55.167 回答