flashsurface
Grünschnabel
Hallo,
ich habe aus Access2003 eine Tabelle als XML exportiert und möchte diese über ein PHP Script in eine MySQL Datenbank importieren. Das funktioniert soweit auch wunderbar, leider werden aber einige Datensätze nicht importiert.
Alle Datensätze, welche die Zeichenkette "'" oder ">" enthalten, werden verworfen. Wenn ich XML richtig verstanden habe, dann ist diese Kodierung ja aber korrekt, da es mit nativer Schreibweise (' bzw. >) ja illegale Zeichen wären.
Entschuldigt bitte, falls ich nicht die korrekten Begriffe und Bezeichnungen nutze, aber XML ist noch neu für mich und bei PHP/MySQL würde ich mich auch nicht gerade als Profi einschätzen.
Ich vermute, dass es irgendwie am PHP Script liegt, da das XML aus meiner Laien-Sicht OK aussieht. Gibt es irgendwelche Optionen bei SimpleXML welche aktiviert werden müssen ? Habt ihr einen Tipp für mich ?
Gruss
Michel
Datenstruktur und Scripte:
der erste Datensatz wird verworfen, der 2. wird importiert
ich habe aus Access2003 eine Tabelle als XML exportiert und möchte diese über ein PHP Script in eine MySQL Datenbank importieren. Das funktioniert soweit auch wunderbar, leider werden aber einige Datensätze nicht importiert.
Alle Datensätze, welche die Zeichenkette "'" oder ">" enthalten, werden verworfen. Wenn ich XML richtig verstanden habe, dann ist diese Kodierung ja aber korrekt, da es mit nativer Schreibweise (' bzw. >) ja illegale Zeichen wären.
Entschuldigt bitte, falls ich nicht die korrekten Begriffe und Bezeichnungen nutze, aber XML ist noch neu für mich und bei PHP/MySQL würde ich mich auch nicht gerade als Profi einschätzen.
Ich vermute, dass es irgendwie am PHP Script liegt, da das XML aus meiner Laien-Sicht OK aussieht. Gibt es irgendwelche Optionen bei SimpleXML welche aktiviert werden müssen ? Habt ihr einen Tipp für mich ?
Gruss
Michel
Datenstruktur und Scripte:
der erste Datensatz wird verworfen, der 2. wird importiert
Code:
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="TableName.xsd" generated="2010-12-13T21:34:44">
<TableName>
<intLfdNr>1128</intLfdNr>
<intStatus>3</intStatus>
<strLocationname>South Africa_24</strLocationname>
<strContinent>EMEA</strContinent>
<strCountry>South Africa</strCountry>
<strLocation>Cape Town</strLocation>
<strBemerkung>Bearbeitungsnr.:223934170
Daten angefragt am 15.10.2010
--> Aktionen laufen seit dem 18.11.2009</strBemerkung>
<intBearbeiter>251192</intBearbeiter>
<dtmbearbeitet>2010-11-23T12:13:55</dtmbearbeitet>
</TableName>
<TableName>
<intLfdNr>1129</intLfdNr>
<intStatus>3</intStatus>
<strLocationname>UK_08</strLocationname>
<strContinent>EMEA</strContinent>
<strCountry>UK</strCountry>
<strLocation>London</strLocation>
<strBemerkung>-- Datensatz angepasst 18.03.2010 (xx)
Restliche Information unklar - korrigieren wenn Info vorhanden!</strBemerkung>
<intBearbeiter>271229</intBearbeiter>
<dtmbearbeitet>2010-07-29T09:03:16</dtmbearbeitet>
</TableName>
</dataroot>
PHP:
if(file_exists($file))
{
// open file and read content to object
$xml = simplexml_load_file($file);
// check if file open and read was possible
if($xml)
{
// delete old entries at database
$res = $dbcon->query("TRUNCATE TABLE TableName");
foreach($xml->TableName as $v)
{
// import row into database
$res = $dbcon->query("INSERT INTO TableName (
intLfdNr,
intStatus,
strLocationname,
strContinent,
strCountry,
strLocation,
strBemerkung,
intBearbeiter,
dtmbearbeitet
) VALUES (
'$v->intLfdNr',
'$v->intStatus',
'$v->strLocationname',
'$v->strContinent',
'$v->strCountry',
'$v->strLocation',
'$v->strBemerkung',
'$v->intBearbeiter',
'$v->dtmbearbeitet')");
}// foreach close
}//if(xml)
}//file exists
Zuletzt bearbeitet: