2011-07-11 59 views
0

我創建從數據庫中使用PHP XML文件..?在XML問題和使用PHP

我下面一個語法像這樣

$query = "SELECT * FROM t1 ORDER BY field1"; 

$resultID = mysql_query($query, $linkID) or die("Data not found."); 

$row = mysql_fetch_assoc($resultID); 

$xml_output .="\t\t\t\t\t\t<given_name>" . $row['fieldname'] . "</given_name>\n"; 

echo $xml_output 

一切運作良好,並幾乎是一個良好的XML正在形成.. 但是有一些像&這樣的字符有問題嗎?等等, 我怎麼克服這個? 我不想字符串替換這些..

我希望我的XML是關這就需要對指定的架構進行驗證特殊結構..

幫助感激..

+0

究竟是什麼問題? –

+0

錯誤的東西是這樣的:Value'Morre?'在模式方面不是方面有效的'[\ x00 - /: - > @ - ?? - ?? - ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? - ?? - ?? - ?? - \ v10ffff] * [\ x00- \ X08 \ x0b- \˚F\ x0e- \ X1F - /:! - > @ - ?? - ?? - ?? - ? ? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - \ v10ffff] [\ x00- \ X08 \ x0b- \˚F\ x0e- \ !X1F -/- > @ - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - \ v10ffff] * [\ X00 -/- > @ - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - ?? - \ v10ffff] *」。 [錯誤] XML.xml:5747:32:cvc-type.3.1.3:值'Morre?'元素「姓氏」無效。 –

+1

它看起來像你試圖通過將字符串混合在一起來構建XML文檔。不要這樣做。使用XML庫。 – Quentin

回答

3

兩種解決方案拿出立刻:

  1. 使用<[[CDATA部分。在這種情況下不需要逃避特殊字符。
  2. 逃脫那些字符。 &等於&amp;。 htmlspecialchars確實是一個PHP函數來轉換您的數據。但我寧願選擇第一個解決方案。
+0

如果數據包含']]>? –

+0

用'addslashes'逃生! –

1

使用PHP的htmlspecialchars函數來編碼你的特殊字符。

+0

'htmlentities'將產生HTML實體。它們中的大多數不針對大多數XML DTD /模式進行驗證(除非這些定義了所述實體)。我認爲你想要的是'htmlspecialchars'。 –

+0

這不就是我說的嗎? =/ – Jules

+0

你說得對,我的不好。我認爲有人用'htmlentities'發佈了一個答案,從而激起我的回答。然後我重新加載頁面,看看是否有新的事情發生,我粘貼沒有想到。 –