XML

simplexml_load_file()

Hier werden die XML-Daten aus einer Datei mit Endung xml geladen.
simplexml_load_file()
Hierbei darf man dann allerdings die Attributwerte in den xml Dateien nicht in Anführungszeichen setzen, sondern muss stattdessen das Hochkomma verwenden. z.B.:
<name nickname='Freddy'> Fred Feuerstein<name>

Link Script der Seite
example3.php5

<?php
$xmlData = simplexml_load_file('bb_players.xml');
echo $xmlData->spieler[0]->name."<br/>";
echo $xmlData->spieler[0]->team."<br/>";
echo "<p/>";
echo $xmlData->spieler[1]->name."<br/>";
echo $xmlData->spieler[1]->team."<br/>";
echo "<p/>";

foreach($xmlData->spieler as $mySpieler){
echo $mySpieler ->name;
echo" - ";
echo $mySpieler -> team."<br/>";
}
?>

bb_players.xml <?xml version="1.0" encoding="utf-8"?>
<basketball>
<spieler>
<name>Willi Wacker</name>
<team>Bullen</team>
</spieler>
<spieler>
<name>Fred Franzenhuber</name>
<team>Bears</team>
</spieler>
</basketball>

example4.php5

<?php
$myData = simplexml_load_file('bb_players2.xml');
echo $myData->spieler[0]->name;
echo " - ";
echo $myData->spieler[0]->team;
echo " - ";
echo $myData->spieler[0] ->name['spitzname'];
echo "<p/><p/>";

foreach($myData->spieler as $mySpieler){
echo $mySpieler ->name;
echo " - ";
echo $mySpieler -> name['spitzname'];
echo " - ";
echo $mySpieler -> team."<br/>";
}

echo "<p/><p/>";

$arrKnoten=$myData -> children();
foreach($arrKnoten as $arrMyKnoten){
$arrChildren = $arrMyKnoten ->children();
foreach($arrChildren as $strKnoten => $varValue){
echo "Knoten ".$strKnoten." hat den Wert ".$varValue."<br/>";
}
}
?>

bb_players2.xml <?xml version="1.0" encoding="utf-8"?>
<basketball>
<spieler>
<name spitzname='Will'>Willi Wacker</name>
<team>Bullen</team>
</spieler>
<spieler>
<name spitzname='Freddy'>Fred Franzenhuber</name>
<team>Bears</team>
</spieler>
</basketball>

simplexml_load_string

Die XML Daten sind in einer PHP-Seite eingebunden.
Link Script der Seite
asXML.php5

<?php
$data="<basketball>
<spieler>
<name spitzname='Will'>Willi Wacker</name>
<team>Bullen</team>
</spieler>
<spieler>
<name spitzname='Freddy'>Fred Franzenhuber</name>
<team>Bears</team>
</spieler>
</basketball>";

$xmlData = simplexml_load_string($data);
$xmlData = $xmlData->asXml();
echo $xmlData;

?>


example2.php5

<?php
include 'example2xml.php';

$xml = simplexml_load_string($xmlstr);
echo $xml->spieler[0]->name;
echo $xml->spieler[0]->team;
?>

example2xml.php <?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<basketball>
<spieler>
<name>Willi Wacker</name>
<team>Bullen</team>
</spieler>
<spieler>
<name>Fred Franzenhuber</name>
<team>Bears</team>
</spieler>
</basketball>
XML;
?>

Flash

XML Daten aus Textdatei in Flash laden und anzeigen

Link Info
xml1.html XML Daten in Flash laden und anzeigen, nur die ersten Kindelemente werden ausgegeben und in Variablen abgelegt. Also in diesem Beispiel nur der erste Kunde. Weitere Kunden würden hier nicht ausgelesen.
kunden1.txt UTF-8 siehe Flash Tipp
   
xml2.html

XML Daten in Flash laden und anzeigen mittels Array und dynamisch erzeugten Textfeldern. Hier werden alle Kunden erfasst.

kunden2.txt UTF-8 siehe Flash Tipp
   
xml3.html Hier werden die Attributwerte ausgelesen, siehe Kommentar und xml Datei kunden3.txt
kunden3.txt UTF-8 siehe Flash Tipp
   
xml4.html Hier werden die Daten aus der MySQL Datenbank mittels PHP ausgelesen und XML konform aufbereitet. Flash liest dann die Daten ein und gibt sie aus. Im Actionscript braucht man nur den Verweis auf die PHP-Datei zu ändern, alles andere entspricht dem Beispiel: xml2.html
xmlFlash1.php Siehe auch xmlFlash1a.php Die Tatsache, dass im Buchbeispiel die XML Knoten <Kundenliste><Kunden> nicht mit echo ausgegeben werden hat mich irritiert. Aber hier reicht es anscheinend, dass das Dokument als XML konform ausgezeichnet ist. Genauso wie man Html mit PHP mischt, kann man hier wohl auch XML-Dokumente mit PHP mischen. Der Browser stellt die Daten allerdings anders dar, als wenn sie in einem txt Dokument oder xml Dokument abgelegt wären. Es geht allerdings nicht, dass man den Prolog auch außerhalb der PHP Anweisung einfügt.
 
xml5.html Das funktioniert nur wenn in der PHP INI always_populate_raw_post_data auf on eingestellt ist, was bei Strato nicht der Fall ist. Stattdessen kann man das nächste Beispiel xml6.html verwenden.
xml5.php <?php
$XMLData = $HTTP_RAW_POST_DATA;
$objKunde = simplexml_load_string($XMLData);
$name= $objKunde->Kunden[0]->Kunde[0]->Name;
echo $name;
?>
   
xml6.html

Flash erstellt einen XML Baum und sendet ihn an eine PHP Datei. PHP liest den von Flash erstellten XML Baum aus und schreibt ihn in die Textdatei file.xml


Actionscript (einfach)

senden = new XML("<stay>bamboocha</stay>");
senden.contentType = "text/xml";
senden.onLoad = function() {
trace(this);
};
senden.sendAndLoad("xml6.php", senden);


Actionscript (XML Baum)

myXML = new XML();
myXML.contentType = "text/xml";
myXML.ignoreWhite = true;
myXML.xmlDecl = "<?xml version='1.0' encoding='UTF-8'?>";
//
rootNode = myXML.createElement("XML-Kundenliste");
myXML.appendChild(rootNode);
// -----------------------------------------------------
//Erzeugen des ersten Unterknotens: --------------------
subNode1 = myXML.createElement("Kunden");
myXML.firstChild.appendChild(subNode1);
// -----------------------------------------------------
//Erzeugen des ersten Unter-Unterknotens: --------------
subNode2 = myXML.createElement("Kunde");
myXML.firstChild.firstChild.appendChild(subNode2);
// -----------------------------------------------------
subNode3 = myXML.createElement("Vorname");
myXML.firstChild.firstChild.firstChild.appendChild(subNode3);
subNode3a = myXML.createTextNode(Vorname);
myXML.firstChild.firstChild.firstChild.childNodes[0].appendChild(subNode3a);
subNode3 = myXML.createElement("Nachname");
myXML.firstChild.firstChild.firstChild.appendChild(subNode3);
subNode3a = myXML.createTextNode(Nachname);
myXML.firstChild.firstChild.firstChild.childNodes[1].appendChild(subNode3a);
subNode3 = myXML.createElement("Firma");
subNode3a = myXML.createTextNode(Firma);
myXML.firstChild.firstChild.firstChild.childNodes[2].appendChild(subNode3a);
myXML.firstChild.firstChild.firstChild.appendChild(subNode3);
subNode3 = myXML.createElement("Adresse");
myXML.firstChild.firstChild.firstChild.appendChild(subNode3);
subNode3a = myXML.createTextNode(Adresse);
myXML.firstChild.firstChild.firstChild.childNodes[3].appendChild(subNode3a);
subNode3 = myXML.createElement("PLZ");
myXML.firstChild.firstChild.firstChild.appendChild(subNode3);
subNode3a = myXML.createTextNode(PLZ);
myXML.firstChild.firstChild.firstChild.childNodes[4].appendChild(subNode3a);
subNode3 = myXML.createElement("Ort");
myXML.firstChild.firstChild.firstChild.appendChild(subNode3);
subNode3a = myXML.createTextNode(Ort);
myXML.firstChild.firstChild.firstChild.childNodes[5].appendChild(subNode3a);
subNode3 = myXML.createElement("Staat");
myXML.firstChild.firstChild.firstChild.appendChild(subNode3);
subNode3a = myXML.createTextNode(Staat);
myXML.firstChild.firstChild.firstChild.childNodes[6].appendChild(subNode3a);
subNode3 = myXML.createElement("email");
myXML.firstChild.firstChild.firstChild.appendChild(subNode3);
subNode3a = myXML.createTextNode(email);
myXML.firstChild.firstChild.firstChild.childNodes[7].appendChild(subNode3a);
//
myXML.onLoad = function() {
trace(this);
};
myXML.sendAndLoad("xml6.php", myXML);

 

 

 

 

xml6.php

<?php
/* lese "raw POST" Daten */
$xml = fopen("php://input","r");

/* Eine Datei zum Schreiben öffnen */
$file = fopen("file.xml","w+");

/* Jeweils 1kB Daten lesen und
in die Datei schreiben */
while ($data = fread($xml,1024))
fwrite($file,$data);

/* Die Streams schließen */
fclose($file);
fclose($xml);

?>

file.xml

 

   

 

zu den anderen Beispielen