Генерировать XML из PHP через SQL

У меня ошибка при запуске этого кода .. Я отлично работаю, когда в базе данных нет специальных символов. если у него есть специальные символы, тогда я получил ошибку, пожалуйста, решите меня, я очень благодарен.

Следующая ошибка возникает, когда какие-либо специальные символы в базе данных, такие как «&?», Я не понимаю, почему эти ошибки приходят .. и я не использую DOM или XMLWrite, просто создаю xml через файл и делаю clerify 1 вещь, которая также не является CDDATA работая над своим кодом, я проверяю его. Пожалуйста, скажите мне кое-что, как я могу сделать xml с ошибкой меньше ..

Ниже приведен код:

$file= fopen("../xml/{$productID}.xml" , "w"); $_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"; $_XML = "<!DOCTYPE Server SYSTEM \"opt/pdos/etc/pdoslrd.dtd\">"; $_xml .="<productsnode>"; while ($row = mysql_fetch_array($productQuery, MYSQL_ASSOC)) { $_xml .=" <product>"; $_xml .=" <productID>" . $row['productID'] . "</productID>"; $_xml .=" <productName>" . htmlspecialchars($row['productName']) . "</productName>"; $_xml .=" <productDescription>" . htmlspecialchars($row['productDescription']) . "</productDescription>"; $_xml .=" <productPicture>" . htmlspecialchars($row['productPic']) . "</productPicture>"; $_xml .=" <category>"; $_xml .=" <categoryID>" . $row['categoryID'] . "</categoryID>"; $_xml .=" <categoryName>" . htmlspecialchars($row['categoryName']) . "</categoryName>"; $_xml .=" <categoryDescription>" . htmlspecialchars($row['categoryDiscription']) . "</categoryDescription>"; $_xml .=" <categoryPicture>" . htmlspecialchars($row['categoryPic']) . "</categoryPicture>"; $_xml .=" <subCategory>"; $_xml .=" <subCategoryID>" . $row['subCategoryID'] . "</subCategoryID>"; $_xml .=" <subCategoryName>" . htmlspecialchars($row['subCategoryName']) . "</subCategoryName>"; $_xml .=" <subCategoryDetail>" . htmlspecialchars($row['subCategoryDescription']) . "</subCategoryDetail>"; $_xml .=" </subCategory>"; $_xml .=" </category>"; $_xml .=" </product>"; } $_xml .="</productsnode>"; fwrite($file, $_xml); fclose($file);