Anmelden, um zu folgen  
Folger 0
grunet

XML und PHP

5 Beiträge in diesem Thema

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
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'];

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
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...

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
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;

}

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstellen Sie einen Account oder melde Sie sich an um kommentieren zu können

You need to be a member in order to leave a comment

Create an account

Registrieren Sie einen neuen Account in unserer Community. Es ist einfach!


Register a new account

Anmelden

Haben Sie bereits einen Account? Dann melden Sie sich hier an.


Jetzt Anmelden
Anmelden, um zu folgen  
Folger 0