• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

SimpleXMLElement

imoney91

Mitglied
Hallo,

ich habe folgendes XML Object und möchte auf "A Textbook of Sources for Teachers and Teacher-Training Classes" zugreifen. Wie bewerkstellige ich das? Laut php manual kann ich mit dem Operator "->" darauf zugreifen. Wenn ich aber beispielsweise auf $i-> 0 ausführe, bringt er mir einen Fehler, weil es kein String ist. Führe ich $i-> "0" aus, ist mein Ergebnis null.

Code:
SimpleXMLElement Object
(
    [@attributes] => Array       
          (           
              [id] => t2       
          )
    [0] => A Textbook of Sources for Teachers and Teacher-Training Classes
)

Danke im Voraus

Gruß
 
Werbung:
Darf ich mal fragen wie die XML denn aussieht, ich finde es irgendwie komisch dass die xml so folgendes Tag haben soll

<0>A Textbook of Sources for Teachers and Teacher-Training Classes</0>
 
Werbung:
Irgendwie hab ich gerade diese aberwitzige Idee mit
$i->(string)0
Aber das wird sicher nicht klappen :D

Versuch es sonst mal mit Xpath

Ansonsten wie gesagt finde ich den Aufbau der XML etwas verstörend :D Hast du diese XML gebaut oder bekommst du diese durch eine Schnittstelle oder dergleichen.
Denn wie gesagt
<0>A Textbook of Sources for Teachers and Teacher-Training Classes</0>

so hab ich das noch nie in einer XML gesehen, aber ich könnte mich auch gerade irren wegen dem Objectaufbau
 
Werbung:
Nah dran... ;-)
PHP:
(string)$i->0

Sollte hinhauen

Das wird aber nicht klappen, da eine variable nicht mit einer Zahl anfangen darf. Also darf nach -> keine 0 erscheinen. Wenn man
nun davon ausgehen würde, es würde klappen, würde
$i->0
kein string zurückliefern sondern ein Simplexml Object, mit (string)$i->0 castest du das object aber als string so das kein
Object mehr rauskommt sondern nur den Satz

EDIT:
das was mir noch einfällt ist, man könnte das Object als Array casten und so an den Wert bzw. an den String kommen.
 
Zuletzt bearbeitet:
mail at kleineedv dot de
4 years ago
I had a problem with simplexml reading nodes from an xml file. It always return an SimpleXML-Object but not the text inside the node.

Example:
<?xml version="1.0" encoding="UTF-8"?>
<Test>
<Id>123</Id>
</Test>

Reading this xml into a variable called $xml and then doing the following
<?php
$myId = $xml->Id; ?> Did not return 123 in $myId, but instead I got a SimpleXMLElement Object.

The solution is simple, when you know it. Use explicit string conversion.
<?php
$myId = (string)$xml->Id; ?>
Quelle
 
Werbung:
Ahhhhh... jetzt komm ich auch mit :)

Seine ausgabe kommt ja von

PHP:
print_r($xml);
Würde dann nicht ein einfaches

PHP:
(string)$xml[0];
Zum Ziel führen?
Weil ein XML-Tag mit 0 ist nicht erlaubt.

XML Naming Rules
XML elements must follow these naming rules:

  • Names can contain letters, numbers, and other characters
  • Names cannot start with a number or punctuation character
  • Names cannot start with the letters xml (or XML, or Xml, etc)
  • Names cannot contain spaces
Any name can be used, no words are reserved.
http://www.w3schools.com/xml/xml_elements.asp
 
Das weiß ich nun so aus dem Kopf nicht. Denn $xml enthält ja das Object. Ich weiß das man ein Object als array casten kann, aber ob es direkt so funktioniert kann ich nun net sagen.

Aber ich denke weitere Diskussionen sind ohne Sinn, da der Threadersteller sich auch nicht mehr gemeldet hat. Also hat er es wohl anders gelöst :)
 
Zurück
Oben