我正在使用下面的代码从数据库中生成非常大的XML文件 代码不是由我写的,由Kirupa提供的Jubba写的
问题是,一切都很好,但大约30'左右'输出XML文件中的符号丢失。例如,输出将是这样的..
<XYZ>
<ab>123333</ab>
<resource>http://xxx.com</resource>
/XYZ> /* no '<' */
使用的代码是:
header("Content-type: text/xml");
$host = "localhost";
$user = "root";
$pass = "";
$database = "test";
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
$query = "SELECT * FROM blog ORDER BY date DESC";
$resultID = mysql_query($query, $linkID) or die("Data not found.");
$xml_output = "<?xml version=\"1.0\"?>\n";
$xml_output .= "<entries>\n";
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t<entry>\n";
$xml_output .= "\t\t<date>" . $row['date'] . "</date>\n";
// Escaping illegal characters
$xml_output .= "\t\t<text>" . $row['text'] . "</text>\n";
$xml_output .= "\t</entry>\n";
}
$xml_output .= "</entries>";
echo $xml_output;
?>
你能告诉我错误的原因吗?
答案 0 :(得分:3)
$row['text'] = str_replace("<", "<", $row['text']);
^----- should be <
注意指示的字符。你基本上在这里做了一个null-op,产生了无效的XML。
但是,为什么不使用htmlspecialchars()
呢?它仅对html(和XML)元字符进行编码(&'"<>
)