XML to MySQL with PHP EXPAT

crunchips

Grünschnabel
hallo an alle, habe ein riiiiiiiiiiiiiiiiiiiiiiiiiiiiiiieessiges problem und komme einfach nicht mehr weiter....für php gurus müsste das kein problem sein.
1. ich parse ein xml dokument mit expat und gebe es aus -> klappt
2. ich möchte an die einzelnen elemente der xml datei -> riessiges problem
3 danach möcht ich diese an eine tabelle in mysql senden -> wäre nicht das problem

hier mal die xml datei:
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<E_Lesson>
	<Lesson_Unit>
		<learningObject id="2" seqNumber="0">
			<title>test Lesson 2</title>
			<comments>no comments</comments>
		</learningObject>
		<learningObject id="32" seqNumber="0">
			<title>test Lesson 32</title>
			<comments>scheiss comments</comments>
		</learningObject>	
	</Lesson_Unit>
</E_Lesson>

für mich ist nur das erste kindknoten relevant. egal wieviel <learningObject> tags es gibt!
während des parsens schreibt er mir den aktuellen name in ein array
PHP:
$file = "output_1.xml";

$result = array();
$currRow = 0;

function startElement($parser, $name, $attrs)
{
   global $currTag, $currRow;
   $currTag = $name;
}

function endElement($parser, $name) {
    global $currRow; 
   /* NOTIZ: EXPAT liefert Ergebnisse in Grossbuchstaben...hier könnte man den Abgleich 
   mit der Funktion strtolower() in kleinbuchstaben umwandeln */ 
    if ($name == "LEARNINGOBJECT")
        $currRow++;
}

function characterData($parser, $tagData) {
    global $result, $currRow, $currTag;
    
    $tagData = trim($tagData);
    if ($tagData != '')
        $result[$currRow][$currTag] = $tagData;
}
und gebe es folgendermassen aus
PHP:
xml_parser_free($xml_parser);

echo "<xmp>";
print_r($result[0]);
echo "</xmp>";
Für mich ist aber wichtig wie ich an die inhalte der beiden tags <title> und <comments> komme hier hackt es total bei mir....pack ich foreach rein, gibt er mir einen invalid bla bla for foreach aus... kann mir jemand bitte helfen ich verzweifel langsam....

ps. bitte keine vorschläge auf simplexml umzusteigen kann es aus kompatibilitätsgründen nicht einsetzen!
danke im voraus bye bye crunny.
 
hi jan, hi alle, weil ich langsam keine lust mehr hatte hab ich einfach mal alle möglichen kombis probiert....
nochmal die xml datei verkürtz und mein vorhaben:
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<E_Lesson>
    <Lesson_Unit>
        <learningObject id="2" seqNumber="0">
            <title>test Lesson 2</title>
            <comments>no comments</comments>
        </learningObject>
        <learningObject id="32" seqNumber="0">
            ...
        </learningObject>    
    </Lesson_Unit>
</E_Lesson>
ich wollte an den inhalt von den beiden tags <inhalt> und <comments>. da ich zuvor das alles in ein array $result packe ($result = array(); ) vergass ich 2 wichtige Dinge.
1. ich habe hier ein 2 dimensionales ARRAY
2. EXPAT und seine Methoden.

bei der Ausgabe versuchte ich zu letzt das:
PHP:
echo "<xmp>";
// ACHTE auf NOTIZ von endElement()!
print_r($result[0][TITLE]);
print_r($result[0][COMMENTS]);
echo "</xmp>";
$result[$currRow][$curTag]
ich total vergessen das EXPAT ein ERGEBNIS IN GROSSBUCHSTABEN liefert aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa und ich idiot, schreib da die ganze zei print_r($result[0][title] usw. rein. jetzt hab ich auch shcon ne idee wie ich diese jetzt an mysql sende und zwar alles staatisch :-). würde gerne das in eine foreach schleife packen aber diese fehlermeldung nervt total... danke und nicht zu früh freuen, ich frag noch öfters nach :-) bye bye crunny und danke an alle die geantwortet haben. wenn interesse besteht poste ich das ganze script...bye
 
Zuletzt bearbeitet:
Wieso wie sieht denn die foreach Schleife bei dir aus, wenn du das mal posten würdest, könnte man dir ja evtl. helfen, wo dein Fehler ist. :)
 
crunchips hat gesagt.:
wenn interesse besteht poste ich das ganze script...bye

Hallo Chrunchips, könntest Du mir das ganze Script senden oder ins Forum posten? Wäre Dir sehr dankbar! Soll jede Nacht eine xml-Datei in eine bestehende mysql-Datei importieren, wobei die Feldnamen nicht übereinstimmen und habe keinen Schimmer von xml :confused:

Danke im Voraus!
 
Zurück