Anzeige - [Hier werben]

> Wie parse ich XML mit PHP?
Ayom Wissensdatenbank 654 Artikel
  Aktuelles Rating:    Last Edit by Alain Aubert @ 07.12.2004 00:12:25
Edit Post

Wie parse ich XML mit PHP?

"php xml parsen"

Diese Funktion stammt aus der Free Amazon Web Service Funktionen Sammlung www.chipdir.nl/amazon/ und das Copyright liegt bei Jaap van Ganswijk

Beschreibung: Es geht darum eine XML Datei in einen PHP Array zu schreiben, um den im weiteren Scipt zu verwenden.
Es ist aber nötig die Namen der XML Felder zu kennen. Wenn du diese noch nicht kennt, kann man die Testfunktion ausführen (Ungetestete Funktion).
Um den Code zu kopieren benutze die Edit Funktion.

Benutzungsbeispiel:
CODE
$xml = "<xmlfeld>
<unterfeld>Text 1</unterfeld>
<unterfeld>Text 2</unterfled>
</xmlfeld>";

$arr = xml2array($xml);

//Die Arrayfelder:

$arr['xmlfeld']['unterfeld'][0] = "Text 1";
$arr['xmlfeld']['unterfeld'][1] = "Text 2";



Testfunktion
Beschreibung: Benutzt xml2array und gibt den ganzen Array aus. Input: XML-String (dh das xml-file)
CODE

$file = file("datei.xml");
$xmlstring = join("", $file);

$arr = xml2array($xmlstring);

do_printR($arr);

function do_printR($arr) {
while (list($k,$v) = each($arr)) {
if (is_array($arr[$k])) {
echo $k.": Array<br>";
do_printR($arr[$k]);
} else {
echo $k.": ".$v."<br>";
}
}
}

Funktion um XML in PHP Array umzuwandeln
Input: Korrekter XML Code
Output: Array mit allen Werten
Die Funktion xml2array wandelt einen XML String in einen Array um.
CODE

function xml2array($s) {
if ($Atmp1=explode('>',$s,2)
/* && ereg('^<\?(xml .*)\?$',$Atmp1[0],$Atmp2)*/) {
//$A['xml']=$Atmp2[1];
//XML Version, kümmert niemanden
//funktioniert nur bei korrekten XML eingaben
xml2array_sub($A,$Atmp1[1]);
}
return $A;
}
function xml2array_sub(&$A,$s) {
global $error_msg;

for ($c=0;ereg('<([^<>/ ]*)( [^<>]*)?/>(.*)',$s,$Atmp1) or
ereg('<([^<>/ ]*)( [^<>]*)?>(.*)',$s,$Atmp1) and
$Atmp2=explode('</'.$Atmp1[1].'>',$Atmp1[3],2);++$c) {
$E=array();
$tag=$Atmp1[1];
if ($Atmp1[2]) {
$Atmp3=explode(' ',substr($Atmp1[2],1));
foreach ($Atmp3 as $d) {
$Atmp4=explode('=',$d,2);
$Atmp4[1]=ereg_replace('^"(.*)"$','\1',$Atmp4[1]);
$E[$Atmp4[0]]=$Atmp4[1];
}
}
if ($Atmp2) {
if (!xml2array_sub($E,$Atmp2[0])) {
$E=$Atmp2[0];
}
$s=$Atmp2[1]; //rest of the xml-code
$Atmp2=false;
}
else {
$s=$Atmp1[3]; //rest of the xml-code
}
if ($A[$tag]) { //does it already exist?
//not already a numberically indexed array?
if (!is_array($A[$tag]) or !$A[$tag][0]) {
$Atag=$A[$tag]; //remove element again
unset($A[$tag]);
//make old element first element of it's former self
$A[$tag][]=$Atag;
}
if ($E) {
$A[$tag][]=$E; //add new element
}
}
else {
if ($E) {
$A[$tag]=$E;
if ($tag=='$ErrorMsg') $error_msg=$E;
}
}
}
return $c;
}


Diese Funktion stammt aus der Amazon Web Service Sammlung www.chipdir.nl/amazon/ und das Copyright liegt bei Jaap van Ganswijk

Threads:
Thema: xml mit php parsen

Kommentare und Diskussion:

Zu diesem Artikel gibt es eine Diskussion mit 9 Antworten

Creative Commons License Diese Seite steht (wenn nicht anders angegeben)
unter der Creative Commons Lizenz (Mehr Infos)
Diesen Artikel editieren
Neuer Artikel eröffnen
Kategorien des Artikels:

Aktuelle Themen: Betreff, (Autor) Antw. Views Letzte Aktion
Kennt jemand hier Kohana
(René Weber)
3 220 Thu 23. May 14:12
von Nico
Problem mit 301 Redirect
(MacGyver)
2 270 Mon 20. May 19:44
von MacGyver
javascript:history.back() erweitern?
(HPI-Service)
11 16176 Mon 20. May 19:21
von Alain Aubert
Plattform für Leadverteilung gesucht!
(lacruz)
8 434 Fri 17. May 15:56
von Manuel Merz
WP Widget zum Email sammeln
(cebumedia)
2 182 Fri 17. May 10:42
von cebumedia
Alle Diskussionen im Technik Forum Forum anzeigen
Top
 
 


Neu:  Kleinanzeige pinnen  |  Kleinanzeige auf Startseite  |  Werbetarife 2013  |  VIP Mitgliedschaft (30 Tage Geld-zurück-Garantie)



Anzeigen

Textlinks kaufen oder anbieten





[Hier werben]