XML auslesen

Landi83

Grünschnabel
hallo an Alle.
Bin neu hier. habe ein riesen problem, bei dem ich einfach nicht weiterkomme.
Und zwar habe ich noch 2 Wochen zeit ein script zu schreiben, bei dem ich eine Upgeloadete XMl datei auslese.
Also: Nachdem der benutezr die XML Datei hochgeladen hat, sollen die Werte die dadrin vorhanden sind in eine Datenbank geschrieben werden. Dafür habe ich auch schon eine tabelle angeleget.
Ich probiere jetzt schon seid letzter Woche das wirgendwie zu realisieren. es Will aber einfach nciht klappen.
Ich zeige euch erstmal die XML.
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="Seminar.xsd" generated="2009-03-16T09:18:55">
<Seminar>
<Semtitel1>Stress- und Ressourcenmanagement</Semtitel1>
<Semtitel2>aktiver Umgang mit Belastungen</Semtitel2>
...
<Doz_Id_alt>0</Doz_Id_alt>
</Seminar>
<Seminar>
<Semtitel1>FMEA - Vermeidung von möglichen</Semtitel1>
<Semtitel2>Fehlern</Semtitel2>
...
<Doz_Id_alt>0</Doz_Id_alt>
</Seminar>
<Seminar>
<Semtitel1>Das Mitarbeitergespräch als</Semtitel1>
und so weiter
<Doz_Id_alt>0</Doz_Id_alt>
</Seminar>
</dataroot>

ich habe es schon auf verschiedenen Wegen probiert. mein aktuelles Script is dieses hier.
Ich hoffe es stört euch nciht, dass es etwas länger ist.
Aber ich glaube nur so, kann man sich ein vernünftiges bild davon machen.
PHP:
<?php
session_start();

/*
holt den Namen aus der Login.php über das Session-Objekt und wandelt
ihn aus Übersichtsgründen gleich in Großbuchstaben um.
*/
$username = strtoupper($_SESSION["Benutzername"]);
/*
folgendes soll alles nur ablaufen, wenn ein Username übergeben wurde,
um zu vermeiden, dass jemand, der nicht eingeloggt ist, direkt auf 
die backend.php kommt!
*/
if(!empty($username))
{
	if($_REQUEST['Send'])
	{
		if($_FILES['Datei']['tmp_name'])
		{
			$popuptext = "Ihre Datei &quot;".$_FILES['Datei']['name']."&quot; wurde erfolgreich hochgeladen";
			/*
			 hier wird nach dem Dateinamen geschaut, weil der Upload 
			 nur erfolgen soll, wenn eine .XML-Datei hochgeladen wurde!
			 */
			$teile = explode(".", $_FILES['Datei']['name']);
			if($teile[1] == "xml")
			{
				/*include('schreibe.php');
				schreibe($username);*/
				$newFileName = $username.strrchr($_FILES['Datei']['name'], '.');
				move_uploaded_file($_FILES['Datei']['tmp_name'], "upload/".$newFileName);
				
				$server="localhost";
				$user="root";
				$pass="";
            	//"upload/".$newFileName
				$dbconnect = mysql_connect($server, $user, $pass) or die("Es konnte keine Verbindung zur Datenbank hergestellt werden.". mysql_error());
				$db = mysql_select_db('s0.alpha') or exit('Keine DB ausgew&auml;hlt' . mysql_error());
				
				$doc = new DOMDocument;
				$doc->load('Seminar.xml');
				
				$seminar = $doc->getElementsByTagName("Seminar");
				
				foreach ($seminar as $value)
				{
					$titels = $value->getElementsByTagName("Semtitel");
					$titel1 = $titels->item(0)->nodeValue();
					echo $titel1;
				}
				
				/*$dom = domxml_open_file("upload/".$newFileName);
				$titels1 = $dom->get_elements_by_tagname('Semtitel1');
				foreach ($titels1 as $titel1)
				{
					$text_nodes = $titel1->child_nodes();
					
					foreach ($text_nodes as $text)
					{
						$temp = utf8_decode($text->node_value());
						echo $text->node_value()."\n";
						mysql_query("INSERT INTO agw_temp (Semtitel1) VALUES('$temp')");
					}
				}
				mysql_close($dbconnect);*/
			}
			else
			{
				$popuptext = "Bitte laden Sie eine XML-Datei hoch!";
			}				 
		}
		else
		{
			$popuptext = "Bitte geben Sie eine Datei an!";
		}
		echo "<body onload=\"javascript:alert('".$popuptext."'); history.back();\"></body>";
	}
	else
	{
	?>
	
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
	<head>
	<link rel="SHORTCUT ICON" href="/logo.ico"/>
	<link href="/styles1.css" rel="stylesheet" type="text/css"/>
	 <title>Upload</title>
	 <script type="text/javascript" src="">
	 </script>
	</head>
	<body>
	<img src="/logo2.gif" />
	<br />
	<br />
	<div id="ueberschrift">Dateiupload</div>
	<br />
	Sie sind angemeldet als: <div id="eingeloggt"><?php echo"$username "?></div>
	<div id="link"><a href="ausloggen.php"> Ausloggen</a></div>
	<br />
	<br />
	Bitte laden Sie hier Ihre <div id="xml">XML</div>-Datei hoch
	<br />
	<br />
	<form action="<?php echo$_SERVER['localhost']; ?>" enctype="multipart/form-data" method="post">
	<input name="Datei" type="file" />
	<br />
	<br />
	<input name="Send" type="submit" value="Hochladen" />
	</form>
	</body>
	</html>
	
	<?php
	}
}
	?>

Ich hoffe ihr könnt mir dabei helfen. Denn mit der Auskommentierten DOMXML_OPEN_FILE ging es halbwegs. da war das Problem, dass er zwar alle titel ausgelesen hat. die aber in einem echo standen. und wenn ich jetzt probiert hatte den echo in die Db zu schreiben, hat er sicch nur den wert genommen, der an erster Stelle stand. ich konnte also nicht den zweiten, dritten und so weiter WErt ansprechen.
Und angeblich soll DOM auch besser seon als domxml. Ich benutze PHP 5.2.8.
Bitte um hilfe. Bin schon echt am verzweifeln und die zeit sitzt mir im nacken... :(

Mit besten grüßen

Landi
 
hab mir mal euer tutorial angeguckt zum them xml etc. klappt jetzt wunderbar. nur die frage ist, ich lese alle titel bei mir aus der xml aus. allerdings werden die in einer einzigen variabek gespeichert. und ich möchte diese titel einzeln später in eine DB schreiben. könnt ihr mir da eventuell weiterhelfen?
hier der neue Code:
PHP:
if(file_exists($xmlfile))
				{
					$xml = simplexml_load_file($xmlfile);
					
					foreach ($xml->Seminar as $Seminar)
					{
						echo $Seminar->item(0)->Semtitel1;
						mysql_query("INSERT INTO agw_temp (Semtitel1) VALUES('$Seminar')");
					}
				}
 
Zurück