PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [mySQL] .xml einlesen


nalye
2009-02-13, 12:21:41
Wie kann ich nur die markierten Werte in eine SQL-DB einlesen? Ich habe eine .php-Datei zur Ausgabe auf dem Bildschirm:

<?php
$datei=file("convert.xml");
{
unset($inhalt,$eintrage);
for ($i=0;$i<count($datei)+1;$i++){$inhalt .="$datei[$i]";
}
$eintrage=explode('---->',$inhalt);
}
for ($i=0;$i<count($eintrage);$i++){
echo nl2br ("$eintrage[$i]");}
?>

Die .xml ist folgende:


<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE onepw_export [
<!ENTITY iexcl "¡">
<!ENTITY cent "¢">
<!ENTITY pound "£">
<!ENTITY curren "¤">
<!ENTITY yen "¥">
<!ENTITY brvbar "¦">
<!ENTITY sect "§">
<!ENTITY uml "¨">
<!ENTITY copy "©">
<!ENTITY ordf "ª">
<!ENTITY laquo "«">
<!ENTITY not "¬">
<!ENTITY shy "*">
<!ENTITY reg "®">
<!ENTITY macr "¯">
<!ENTITY deg "°">
<!ENTITY plusmn "±">
<!ENTITY sup2 "²">
<!ENTITY sup3 "³">
<!ENTITY acute "´">
<!ENTITY micro "µ">
<!ENTITY para "¶">
<!ENTITY middot "·">
<!ENTITY cedille "¸">
<!ENTITY sup1 "¹">
<!ENTITY ordm "º">
<!ENTITY raquo "»">
<!ENTITY frac14 "¼">
<!ENTITY frac12 "½">
<!ENTITY frac34 "¾">
<!ENTITY iquest "¿">
<!ENTITY Agrave "À">
<!ENTITY Aacute "Á">
<!ENTITY Acirc "Â">
<!ENTITY Atilde "Ã">
<!ENTITY Auml "Ä">
<!ENTITY Aring "Å">
<!ENTITY AElig "Æ">
<!ENTITY Ccedil "Ç">
<!ENTITY Egrave "È">
<!ENTITY Eacute "É">
<!ENTITY Ecirc "Ê">
<!ENTITY Euml "Ë">
<!ENTITY Igrave "Ì">
<!ENTITY Iacute "Í">
<!ENTITY Icirc "Î">
<!ENTITY Iuml "Ï">
<!ENTITY ETH "Ð">
<!ENTITY Ntilde "Ñ">
<!ENTITY Ograve "Ò">
<!ENTITY Oacute "Ó">
<!ENTITY Ocirc "Ô">
<!ENTITY Otilde "Õ">
<!ENTITY Ouml "Ö">
<!ENTITY times "×">
<!ENTITY Oslash "Ø">
<!ENTITY Ugrave "Ù">
<!ENTITY Uacute "Ú">
<!ENTITY Ucirc "Û">
<!ENTITY Uuml "Ü">
<!ENTITY Yacute "Ý">
<!ENTITY THORN "Þ">
<!ENTITY szlig "ß">
<!ENTITY agrave "à">
<!ENTITY aacute "á">
<!ENTITY acirc "â">
<!ENTITY atilde "ã">
<!ENTITY auml "ä">
<!ENTITY aring "å">
<!ENTITY aelig "æ">
<!ENTITY ccedil "ç">
<!ENTITY egrave "è">
<!ENTITY eacute "é">
<!ENTITY ecirc "ê">
<!ENTITY euml "ë">
<!ENTITY igrave "ì">
<!ENTITY iacute "í">
<!ENTITY icirc "î">
<!ENTITY iuml "ï">
<!ENTITY eth "ð">
<!ENTITY ntilde "ñ">
<!ENTITY ograve "ò">
<!ENTITY oacute "ó">
<!ENTITY ocirc "ô">
<!ENTITY otilde "õ">
<!ENTITY ouml "ö">
<!ENTITY divide "÷">
<!ENTITY oslash "ø">
<!ENTITY ugrave "ù">
<!ENTITY uacute "ú">
<!ENTITY ucirc "û">
<!ENTITY uuml "ü">
<!ENTITY yacute "ý">
<!ENTITY thorn "þ">
<!ENTITY yuml "ÿ">

]>
<onepw_export>
<E-Mail>
<Datensatz>
<Bezeichnung>Beispiel</Bezeichnung>
<UserID>Username Beispiel</UserID>
<Passwort>1.Passwort Beispiel</Passwort>
<UrlProgramm>notepad.exe</UrlProgramm>
<Geaendert_am>13.01.2009 19:51:01</Geaendert_am>
<Bemerkung>
<line>Dies ist ein Beispieleintrag</line>
</Bemerkung>
<Passwort2>2.Passwort Beispiel</Passwort2>
<GueltigBis>nie</GueltigBis>
<Kategorie>E-Mail</Kategorie>
<Eigene_Felder>
<Feld1>
<Feldname1>Feld1</Feldname1>
<Feldwert1>FeldWert1</Feldwert1>
</Feld1>
<Feld2>
<Feldname2>Feld2</Feldname2>
<Feldwert2>FeldWert2</Feldwert2>
</Feld2>
</Eigene_Felder>
</Datensatz>
</E-Mail>
<FTP>
</FTP>
<Internet>
</Internet>
<Provider>
</Provider>
<Software>
</Software>
<Telefon>
</Telefon>
</onepw_export>



Als Ausgabe der .php kommt folgendes mit 5 Leerzeilen am Anfang:







Beispiel
Username Beispiel
1.Passwort Beispiel
notepad.exe
13.01.2009 19:51:01

Dies ist ein Beispieleintrag

2.Passwort Beispiel
nie
E-Mail


Feld1
FeldWert1


Feld2
FeldWert2

Berni
2009-02-13, 13:35:48
Deine Überschrift ist eigentlich irreführend, da es hier ja um ein PHP-Problem geht.
In PHP solltest du dir mal simplexml ansehen (gibt auch genug Tutorials dafür).

nalye
2009-02-13, 13:43:00
Na ja, ich wills ja in eine Datenbank einlesen...

The_Invisible
2009-02-13, 14:45:55
oder man machts "dreckig" mit regulären ausdrücken.

mfg

nalye
2009-02-16, 11:24:49
Hmpf... Ich scheitere grade echt...
Ich möchte quasi aus o.g. eine neue .xml-Datei erstellen, allerdings die Reihenfolge und die node-Namen ändern.
Für vorgekaute Lösungen bin ich dankbar, aber ein Schubs in die richtige Richtung wäre auch hervorragend :)

Coda
2009-02-16, 11:52:04
Schau dir SimpleXML (http://de.php.net/SimpleXML) an. Ist wirklich nicht so schwer.

nalye
2009-02-16, 13:33:12
Ich blick da grade beim besten Willen nicht durch :(
*Hirnblockade hab*

Gast
2009-02-16, 14:04:41
Ich blick da grade beim besten Willen nicht durch :(
*Hirnblockade hab*
weniger drogen nehmen, dann klappts auch mit dem xml ;)

nalye
2009-02-16, 17:15:59
*Seit 10 Jahren drogenfrei bin - außer Zigaretten* :)

rotalever
2009-02-16, 17:55:47
SimpleXML geht ganz Simpel...

Einfach so:


$text = @file_get_contents("meinedatei.xml");
if ($text === False)
{
echo "Datei nicht da<br>";
}
$pxml = simplexml_load_string($response);
if ($pxml === False)
{
echo "XML falsch<br>";
}

print_r($pxml); //und dann das passende raussuchen
//zum Beispiel:
print_r($pxml->erstertagname->zweitertagname);
//oder:
foreach ($pxml->erstertagname->zweitertagname as $alletags)
{
print_r($alletags);
}

//prüfen ob tag vorhanden ist:
if (!isset($pxml->erstertagname->anderertagname))
{
echo "anderertagname ist nicht in erstertagname enthalten!<br>";
}