SimpleXML Fehler
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ankommen
array
ausprobieren
behandeln
code
direkt code
element
exportieren
fehl
inhalt
jemand
lese
liste
machen
output
schlauch
string
struktur
umwandeln
zahl
-
Hi,
ich stehe gerade wirklich auf dem Schlauch und komme nicht weiter, irgendwie scheint sich simpleXML gegen mich verschworen zu haben... Vielleicht kann mir von euch mal jemand erklären warum das nicht geht:
Ich hab ein SimpleXMLElement, aus dem ich einfach nur die ID Liste raus exportieren möchte. Nichts weiter. Das wars. Eigentlcih ganz einfach - eigentlich! Ich lese mein SimpleXMLElement so ein:
$this->Results = simplexml_load_file($Query);
Danach entsteht ungefähr diese Struktur:
SimpleXMLElement Object ( [Count] => 1908 [RetMax] => 1908 [RetStart] => 0 [QueryKey] => 1 [WebEnv] => NCID_1_420189972_130.14.22.33_5555_1346403598_85646359 [IdList] => SimpleXMLElement Object ( [Id] => Array ( [0] => 22920665 [1] => 22920663 [2] => 22920661 [3] => 22920660
Wobei die ID Liste natürlich enorm viel länger ist. Soweit so gut. Mein Versuch, da es ja ein SimpleXMLElement ist einfach es mal über echo zu probieren also echo $xml->IdList; schlug fehl. Müsste aber funktionieren laut http://de2.php.net/manual/de/simplexml.examples-basic.php Beispiel 2 hier.
Ok, macht nichts - was anderes probiert:
private function FilterIDs($Node) { foreach($Node->children() as $Name) { $this->FilterIDs($Name); if($Name->getName() == "IdList") { echo $Name->Id; } } }
Geht auch nicht. Warum? Keine Ahnung. Manchmal scheint beim Debug Output übrigens die Id Liste ein Array zu seien, während es manchmal eine Aneinanderreihung von SimpleXMLElementen ist, die jeweils nur eine ID enthalten.
Was soll ich jetzt bitte machen, um an die Werte zu kommen? Danke! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo
willst Du einfach alle Ids aus der IdList ausgeben ?
dann einfach so:
foreach ($Node->IdList->Id as $Name) { echo "<br />".$Name."\n"; }
... manchmal Array und manchmal Aneinanderreihung von SimpleXMLElemente ???
meinst Du als Array of Objects
Wenn das Id Array nicht direkt den Wert (als int bzw. string) enthält,
sondern je Element wieder ein SimpleXMLElement Object ist, dann
kannst Du das ja auch in der foreach abfangen und umwandeln
foreach ($Node->IdList->Id as $Name) { $inhalt = (is_object($Name) ? get_object_vars($Name) : $Name); echo "<br />".$inhalt."\n"; }
vielleicht geht es auch einfach mit (string) vor dem Element
um ... wenn Object dann Inhalt als String behandeln (umwandeln)
foreach ($Node->IdList->Id as $Name) { $inhalt = (string)$Name; echo "<br />".$inhalt."\n"; }
bzw direktecho "<br />".(string)$Name."\n";
Wenn Du 100% sicher bist, das immer zur ganze Zahlen ankommen,
dann ginge es auch mit (int) anstatt mit (string) davor ...
... einfach mal ausprobieren, habs nicht getestet ... viel Glück ;)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage