我尝试通过PHP将我的MySQL数据库导出为XML文件。
一切正常,但在创建文件之后
编码问题
在我正确打开它之前,我必须打开记事本/ gedit
并保存UTF-8转换。
我尝试了一切以使用UTF-8保存文件,但没有
工作。(它是ISO-8859-15)转换:()
Iam德语所以我使用德语单词作为变量,对不起。
所以我希望你能帮助我。
谢谢,
BamBooCha
PS:我尝试了一个XMLWriter的小例子,它的效果更好,但是 编码更难,不是吗?
class xmlschema{
public function __construct() {
$datenbankname = 'filmdatenbank';
$db_link = mysqli_connect("localhost", "root");
if (!$db_link)
{
die('Fehler: '. mysqli_connect_errno());
}
mysqli_select_db($db_link, $datenbankname);
mysqli_set_charset($db_link, "UTF-8");
$this->sqlToXmlConverter($db_link);
mysqli_close($db_link);
}
private function sqlToXmlConverter($db_link) {
$dom = new DOMDocument('1.0','UTF-8');
$dom->formatOutput = true;
$root = $dom->createElement("filme");
$dom->appendChild($root);
$sql_query_film = "Select * From Filme;";
$handle1 = mysqli_query($db_link, $sql_query_film);
if (mysqli_num_rows($handle1)== 0){
echo "Die Eingegebene ID '".$id ."' ist in der Datenbank nicht vorhanden.
<br> Versuchen sie es erneut.";
}
while ($row = mysqli_fetch_object($handle1))
{
//film einpfelegen
$root->appendChild($film = $dom->createElement("film"));
$film->setAttribute("id", $row->id);
$name_de = $dom->createElement("name_de",$row->name_de);
$name_en = $dom->createElement("name_en",$row->name_en);
$film->appendChild($name_de);
$film->appendChild($name_en);
$film->appendChild($dom->createElement("laufzeit", "".$row->laufzeit));
$film->appendChild($dom->createElement("einspielergebnis",
$row->einspielergebnis));
//schauspieler einpfelegen
$sql_query_schauspieler = "
Select vorname, nachname, geburtstag, geburtsort, geburtsland
from Personen, Film_Schauspieler
where
Personen.id = film_Schauspieler.person_id
and
Film_Schauspieler.film_id = ".$row->id.";";
$handle2 = mysqli_query($db_link, $sql_query_schauspieler);
$film->appendChild($schauspieler = $dom->createElement("schauspieler"));
while ($row2 = mysqli_fetch_object($handle2)) {
$schauspieler->appendChild($person = $dom->createElement("person"));
$person->appendChild($dom->createElement("nachname", $row2->nachname));
$person->appendChild($dom->createElement("vorname", $row2->vorname));
$person->appendChild($dom->createElement("geburtstag", $row2->geburtstag));
$person->appendChild($dom->createElement("geburtsort", $row2->geburtsort));
$person->appendChild($dom->createElement("geburtsland", $row2->geburtsland));
}
mysqli_free_result($handle2);
//produzent einpfelegen
$sql_query_produzent = "
Select vorname, nachname, YEAR(geburtstag) as geburtsjahr
from Personen, Film_Produzent
where
Personen.id = Film_Produzent.person_id
and
Film_Produzent.film_id = ".$row->id.";";
$handle2 = mysqli_query($db_link, $sql_query_produzent);
if (mysqli_num_rows($handle2) > 0){
$film->appendChild($produzent = $dom->createElement("produzent"));
while ($row2 = mysqli_fetch_object($handle2)) {
$produzent->appendChild($person = $dom->createElement("person"));
$person->appendChild($dom->createElement("nachname", $row2->nachname));
$person->appendChild($dom->createElement("vorname", $row2->vorname));
$person->appendChild($dom->createElement("geburtsjahr", $row2->geburtsjahr));
}
}
mysqli_free_result($handle2);
//musikkomponist einpfelegen
$sql_query_musikkomponist = "
Select vorname, nachname, YEAR(geburtstag) as geburtsjahr
from Personen, Film_Musikkomponist
where
Personen.id = Film_Musikkomponist.person_id
and
Film_Musikkomponist.film_id = ".$row->id.";";
$handle2 = mysqli_query($db_link, $sql_query_musikkomponist);
if (mysqli_num_rows($handle2) > 0){
$film->appendChild($musikkomponist = $dom->createElement("musikkomponist"));
while ($row2 = mysqli_fetch_object($handle2)) {
$musikkomponist->appendChild($person = $dom->createElement("person"));
$person->appendChild($dom->createElement("nachname", $row2->nachname));
$person->appendChild($dom->createElement("vorname", $row2->vorname));
$person->appendChild($dom->createElement("geburtsjahr", $row2->geburtsjahr));
}
}
mysqli_free_result($handle2);
}
$dom->save("./ausgabe.xml");
mysqli_free_result($handle1);
}
}