XML und PHP

grunet

Angesehenes Mitglied
Sehr geehrte Webmaster Comunity.

Ich bin nun schon den ganzen Morgen am versuchen ein XML Wert via PHP herauszulesen. Und das ohne erfolg... Auch google kann mir keine richtige Hilfe geben... Immer finde ich neue XML Beispiele, aber keiner bringt mich weiter....

Dafür will ich nur was ganz einfaches machen.

Das XML sieht folgender massen aus:

CODE <?xml version="1.0"?>

<MAIN>
<1>
<sparte>Sparte1</sparte>
<keywords>Keywords1</keywords>
</1>
<2>
<sparte>Sparte2</sparte>
<keywords>Keywords2</keywords>
</2>
</MAIN>

Wie kann ich jetzt in meine PHP file z.b. das Keyword von Sparte 1 ausgeben?

Bitte um Hilfe, bin echt am anschlag mit meinen zimlich kleinen Programmier erfahrungen.

Vielen Dank grunet
 
Hallo Gruinet

QUOTE Auch google kann mir keine richtige Hilfe geben...


Ist ja klar ;-) Google ist auch schlecht... Meine Suche ist vieeeeel besser ;-)

Tippe mal xml in das Suchfeld überhalb dieses Postings ein, dass führt dich dann zu einer Funktion, die dir hilft....

http://www.webmasterforum.ch/faq/wie-parse...-php-a-208.html

Achtung dein XML Code ist nicht einwandfrei.

CODE $arr['MAIN']['1']['sparte'];
$arr['MAIN']['1']['keywords'];
$arr['MAIN']['2']['sparte'];
$arr['MAIN']['2']['keywords'];

 
Hallo Alain

Danke für deine Antwort, solche Parser habe ich schon tausende gefunden.
Aber das hilft mir nicht weiter... weil ich nur Bahnhof verstehe.

1. muss ich diesen Code 1 zu 1 kopieren?
2. wo muss ich den code einfügen...

Sorry, aber ich komm echt nicht klar damit...
 
1. Jetzt kopierst du das 1:1
2. lerne PHP, es hilft

Du kannst die Funktion irgendwo hin kopieren, musst sie einfach aufrufen und den Array weiterverarbeiten.
CODE
<?PHP

$xmlstring = "<?xml version=1.0 ?>
<MAIN>
<1>
<sparte>Sparte1</sparte>
<keywords>Keywords1</keywords>
</1>
<2>
<sparte>Sparte2</sparte>
<keywords>Keywords2</keywords>
</2>
</MAIN>";






$arr = xml2array($xmlstring);

echo $arr['MAIN']['1']['sparte'],$arr['MAIN']['1']['keywords'];
echo $arr['MAIN']['2']['sparte'],$arr['MAIN']['2']['keywords'];


/**
* Debug! */
do_printR($arr);

function do_printR($arr) {
if (is_array($arr)) {
while (list($k,$v) = each($arr)) {

if (is_array($arr[$k])) {

echo $k.": Array<br>\n";

do_printR($arr[$k]);

} else {

echo $k.": ".$v."<br>\n";

}

}

}
}

// end debug

// convert an XML-string to an array

function xml2array($s) {

if ($Atmp1=explode('>',$s,2)

/* && ereg('^<\?xml (.*)\?$',$Atmp1[0],$Atmp2)*/) {

// $A['xml']=$Atmp2[1];

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;

}
 
hab das ganze mal so in mein file geladen, aber es gibt mir jetzt nicht aus wenn ich es im browser öffne...?

Und wie ich sehe, ist ja nun das <MAIN>
<1>
<sparte>Sparte1</sparte>
<keywords>Keywords1</keywords>
</1>
<2>
<sparte>Sparte2</sparte>
<keywords>Keywords2</keywords>
</2>
</MAIN>"; in diesem Code drin, aber das möchte ich ja in einem xml file haben.
 
Sorry Grunet, aber denken musst du schon noch selber.

Lies das File einfach ein. fopen(), file() siehe http://www.php.net/manual

Du musst das File durch den PHP Parser jagen, also wenn du es auf deinem Computer einfach doppelklickst, wird logischerweise nichts angezeigt.

-> Das Ding muss auf den Server
 
Zurück
Oben