XML Charset

luchs3

Erfahrenes Mitglied
Hi,
Ich versuche mich mit php und XML anzufreunden.
Derzeit versuche ich eine ODBC Abfrage zu erstellen.
Leider stellt er mir Umlaute fehlerhaft dar.

...
header("Content-Type: application/xml");

$dom = new DOMDocument('1.0','UTF-8');
$dom->formatOutput = true;

$adatadrs = $dom->appendChild($dom->createElement('adatadrs'));
...
Wenn ich statt UTF-8, ISO-8859-1 eintrage, bekomme ich einen Fehler von wegen nicht geschlossenem Token.
Wenn ich nichts eintrage und den Standard (ISO-8859-1) aus der php.ini verwende, verändert er zwar die Darstellung, aber richtig ist sie immer noch nicht.

Bei einer Abfrage, bei der ich die Daten direkt verwende (HTML) stellt er alles normal dar.

Danke im vorraus
Niko
 
Hi,

Wenn ich statt UTF-8, ISO-8859-1 eintrage, bekomme ich einen Fehler von wegen nicht geschlossenem Token.

wie tobee schon sagt, solltest Du die genaue Fehlermeldung posten. Ein kleines (komplettes) Beispiel, um den Fehler nachvollziehen zu können, wäre auch nicht schlecht.

Wenn ich nichts eintrage und den Standard (ISO-8859-1) aus der php.ini verwende, verändert er zwar die Darstellung, aber richtig ist sie immer noch nicht.

Könnte an diesem Hinweis zu DOM liegen. ;)

LG
 
Danke für den Hinweis.
Wie baue ich das encoding ein?

Die Fehlermeldung:
XML-Verarbeitungsfehler: Ungeschlossenes Token
Adresse: http://10.0.0.4:2020/abfrage/neu/test.php
Zeile Nr. 40, Spalte 3: <row AAD_MATCH="DEB B
--^
Wenn es funktioniert:
<adatadrs>
<row AAD_MATCH="DEB A IMP" AAD_NUM="800407"/>
<row AAD_MATCH="DEB AK L A" AAD_NUM="842501"/>
<row AAD_MATCH="DEB AKH" AAD_NUM="810701"/>
<row AAD_MATCH="DEB AKH L" AAD_NUM="840501"/>
<row AAD_MATCH="DEB ALLMAY" AAD_NUM="891101"/>
<row AAD_MATCH="DEB AMST" AAD_NUM="820501"/>
<row AAD_MATCH="DEB ANNA" AAD_NUM="810801"/>
...
Der Code
PHP:
$exec1 = odbc_exec($Verbindung, $SQL1);

header("Content-Type: application/xml");

$dom = new DOMDocument('1.0','UTF-8');
$dom->formatOutput = true;

$adatadrs = $dom->appendChild($dom->createElement('adatadrs'));

while($dbrow = odbc_fetch_object($exec1)) {

    $row = $adatadrs->appendChild($dom->createElement('row'));

    foreach($dbrow as $spalte => $wert) {

        $row->appendChild($dom->createAttribute($spalte))
        ->appendChild($dom->createTextNode($wert));

    }
}

echo $dom->saveXML();
 
Zurück