Zugriff auf XML-Daten
Richard
- php
Hallo alle,
per Instanz von SimpleXMLElement will ich auf Daten aus einem XML-String zugreifen. Das Objekt wird mit den korrekten Daten gefüllt, var_dump führt zum gewünschten Ergebnis.
Auszug aus XML:
<kader>
<position name="tor">
<spieler>
<name>
Roman Weidenfeller
</name>
<preis>
6.5
</preis>
<saison>
<spieltag nr="1">
<sbnote>
0
</sbnote>
Auszug aus PHP:
$xml = new SimpleXMLElement($xmlstr);
echo $xml->kader->position['tor']->spieler[0]->name;
Doch statt der Ausgabe "Roman Weidenfeller" bekomme ich nur eine Notice "Trying to get property of non-object in C:\web\Apache2\htdocs\buli_manager\index.php on line 9"
Was mache ich falsch?
Beste Grüße
Richard
hi,
Das Objekt wird mit den korrekten Daten gefüllt, var_dump führt zum gewünschten Ergebnis.
Und die Ausgabe von var_dump sieht wie aus?
gruß,
wahsaga
Hallo wahsaga,
Und die Ausgabe von var_dump sieht wie aus?
So:
object(SimpleXMLElement)#1 (1) { ["position"]=> array(4) { [0]=> object(SimpleXMLElement)#2 (1) { ["spieler"]=> array(2) { [0]=> object(SimpleXMLElement)#6 (3) { ["name"]=> string(48) " Roman Weidenfeller " ["preis"]=> string(33) " 6.5 " ["saison"]=> object(SimpleXMLElement)#8 (1) { ["spieltag"]=> object(SimpleXMLElement)#9 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [1]=> object(SimpleXMLElement)#7 (3) { ["name"]=> string(48) " Sascha Kirschstein " ["preis"]=> string(33) " 2.0 " ["saison"]=> object(SimpleXMLElement)#10 (1) { ["spieltag"]=> object(SimpleXMLElement)#11 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } } } [1]=> object(SimpleXMLElement)#3 (1) { ["spieler"]=> array(8) { [0]=> object(SimpleXMLElement)#12 (3) { ["name"]=> string(47) " Frank Fahrenhorst " ["preis"]=> string(33) " 1.9 " ["saison"]=> object(SimpleXMLElement)#20 (1) { ["spieltag"]=> object(SimpleXMLElement)#21 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [1]=> object(SimpleXMLElement)#13 (3) { ["name"]=> string(49) " Christoph Metzelder " ["preis"]=> string(33) " 4.5 " ["saison"]=> object(SimpleXMLElement)#22 (1) { ["spieltag"]=> object(SimpleXMLElement)#23 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [2]=> object(SimpleXMLElement)#14 (3) { ["name"]=> string(46) " Mladen Kristajic " ["preis"]=> string(33) " 3.5 " ["saison"]=> object(SimpleXMLElement)#24 (1) { ["spieltag"]=> object(SimpleXMLElement)#25 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [3]=> object(SimpleXMLElement)#15 (3) { ["name"]=> string(43) " Clemens Fritz " ["preis"]=> string(33) " 2.5 " ["saison"]=> object(SimpleXMLElement)#26 (1) { ["spieltag"]=> object(SimpleXMLElement)#27 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [4]=> object(SimpleXMLElement)#16 (3) { ["name"]=> string(42) " Mathias Abel " ["preis"]=> string(33) " 1.9 " ["saison"]=> object(SimpleXMLElement)#28 (1) { ["spieltag"]=> object(SimpleXMLElement)#29 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [5]=> object(SimpleXMLElement)#17 (3) { ["name"]=> string(47) " Steven Cherundolo " ["preis"]=> string(33) " 2.0 " ["saison"]=> object(SimpleXMLElement)#30 (1) { ["spieltag"]=> object(SimpleXMLElement)#31 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [6]=> object(SimpleXMLElement)#18 (3) { ["name"]=> string(46) " Christian Pander " ["preis"]=> string(33) " 0.8 " ["saison"]=> object(SimpleXMLElement)#32 (1) { ["spieltag"]=> object(SimpleXMLElement)#33 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [7]=> object(SimpleXMLElement)#19 (3) { ["name"]=> string(50) " Peter van der Heyden " ["preis"]=> string(33) " 1.7 " ["saison"]=> object(SimpleXMLElement)#34 (1) { ["spieltag"]=> object(SimpleXMLElement)#35 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } } } [2]=> object(SimpleXMLElement)#4 (1) { ["spieler"]=> array(10) { [0]=> object(SimpleXMLElement)#36 (3) { ["name"]=> string(49) " Tranquillo Barnetta " ["preis"]=> string(33) " 6.0 " ["saison"]=> object(SimpleXMLElement)#46 (1) { ["spieltag"]=> object(SimpleXMLElement)#47 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [1]=> object(SimpleXMLElement)#37 (3) { ["name"]=> string(43) " Frank Baumann " ["preis"]=> string(33) " 2.3 " ["saison"]=> object(SimpleXMLElement)#48 (1) { ["spieltag"]=> object(SimpleXMLElement)#49 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [2]=> object(SimpleXMLElement)#38 (3) { ["name"]=> string(43) " Nigel de Jong " ["preis"]=> string(33) " 2.7 " ["saison"]=> object(SimpleXMLElement)#50 (1) { ["spieltag"]=> object(SimpleXMLElement)#51 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [3]=> object(SimpleXMLElement)#39 (3) { ["name"]=> string(43) " Tomas Galasek " ["preis"]=> string(33) " 2.8 " ["saison"]=> object(SimpleXMLElement)#52 (1) { ["spieltag"]=> object(SimpleXMLElement)#53 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [4]=> object(SimpleXMLElement)#40 (3) { ["name"]=> string(45) " Bernd Schneider " ["preis"]=> string(33) " 3.5 " ["saison"]=> object(SimpleXMLElement)#54 (1) { ["spieltag"]=> object(SimpleXMLElement)#55 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [5]=> object(SimpleXMLElement)#41 (3) { ["name"]=> string(41) " Marko Babic " ["preis"]=> string(33) " 2.8 " ["saison"]=> object(SimpleXMLElement)#56 (1) { ["spieltag"]=> object(SimpleXMLElement)#57 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [6]=> object(SimpleXMLElement)#42 (3) { ["name"]=> string(44) " Hamit Altintop " ["preis"]=> string(33) " 2.8 " ["saison"]=> object(SimpleXMLElement)#58 (1) { ["spieltag"]=> object(SimpleXMLElement)#59 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [7]=> object(SimpleXMLElement)#43 (3) { ["name"]=> string(43) " Ivica Banovic " ["preis"]=> string(33) " 1.0 " ["saison"]=> object(SimpleXMLElement)#60 (1) { ["spieltag"]=> object(SimpleXMLElement)#61 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [8]=> object(SimpleXMLElement)#44 (3) { ["name"]=> string(41) " David Degen " ["preis"]=> string(33) " 1.5 " ["saison"]=> object(SimpleXMLElement)#62 (1) { ["spieltag"]=> object(SimpleXMLElement)#63 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [9]=> object(SimpleXMLElement)#45 (3) { ["name"]=> string(46) " Marco Engelhardt " ["preis"]=> string(33) " 1.5 " ["saison"]=> object(SimpleXMLElement)#64 (1) { ["spieltag"]=> object(SimpleXMLElement)#65 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } } } [3]=> object(SimpleXMLElement)#5 (1) { ["spieler"]=> array(6) { [0]=> object(SimpleXMLElement)#66 (3) { ["name"]=> string(43) " Robert Vittek " ["preis"]=> string(33) " 5.5 " ["saison"]=> object(SimpleXMLElement)#72 (1) { ["spieltag"]=> object(SimpleXMLElement)#73 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [1]=> object(SimpleXMLElement)#67 (3) { ["name"]=> string(48) " Ioannis Amanatidis " ["preis"]=> string(33) " 3.5 " ["saison"]=> object(SimpleXMLElement)#74 (1) { ["spieltag"]=> object(SimpleXMLElement)#75 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [2]=> object(SimpleXMLElement)#68 (3) { ["name"]=> string(47) " Christian Gimenez " ["preis"]=> string(33) " 1.8 " ["saison"]=> object(SimpleXMLElement)#76 (1) { ["spieltag"]=> object(SimpleXMLElement)#77 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [3]=> object(SimpleXMLElement)#69 (3) { ["name"]=> string(40) " Mike Hanke " ["preis"]=> string(33) " 2.8 " ["saison"]=> object(SimpleXMLElement)#78 (1) { ["spieltag"]=> object(SimpleXMLElement)#79 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [4]=> object(SimpleXMLElement)#70 (3) { ["name"]=> string(44) " Joshua Kennedy " ["preis"]=> string(33) " 1.0 " ["saison"]=> object(SimpleXMLElement)#80 (1) { ["spieltag"]=> object(SimpleXMLElement)#81 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } [5]=> object(SimpleXMLElement)#71 (3) { ["name"]=> string(40) " Aaron Hunt " ["preis"]=> string(33) " 1.2 " ["saison"]=> object(SimpleXMLElement)#82 (1) { ["spieltag"]=> object(SimpleXMLElement)#83 (6) { ["sbnote"]=> string(47) " 0 " ["tore"]=> array(2) { [0]=> string(47) " 0 " [1]=> string(47) " 0 " } ["elftore"]=> string(47) " 0 " ["gkarte"]=> string(47) " 0 " ["grkarte"]=> string(47) " 0 " ["rkarte"]=> string(47) " 0 " } } } } } } }
;)
Beste Grüße Richard
Hallo Richard.
Und die Ausgabe von var_dump sieht wie aus?
So:
… ist sie unlesbar. Bitte gib vorher ein „<pre>“ aus oder wechsele gleich per header auf text/plain. (Und bei so viel Text lohnt es sich ggf. die Ausgabe in eine Datei zu packen und diese hier zu verlinken.)
Einen schönen Dienstag noch.
Gruß, Mathias
echo $begrüßung;
Auszug aus XML:
<kader>
<position name="tor">
<spieler>
<name>
Roman Weidenfeller
</name>
>
> Auszug aus PHP:
> ~~~php
$xml = new SimpleXMLElement($xmlstr);
> echo $xml->kader->position['tor']->spieler[0]->name;
Du möchtest also auf das "position"-Element zugreifen, das als Attribut mit dem Namen "name" den Wert "tor" enthält. Woher weiß SimpleXMLElement, dass du das Attribut "name" meinst, wenn du nur position['tor'] notierst?
echo "$verabschiedung $name";
Hallo dedlfix,
Danke, da war ich zu sehr aufs Tor fokussiert. Spätestens beim Versuch, auf einen Abwehrspieler zuzgreifen, hätte ich es wahrscheinlich selbst bemerkt.
Beste Grüße
Richard