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.
SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => t2
)
[0] => A Textbook of Sources for Teachers and Teacher-Training Classes
)
Ansonsten wie gesagt finde ich den Aufbau der XML etwas verstörend 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
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.
[B][I]mail at kleineedv dot de[/I][/B] 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"?>
123
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]
print_r($xml);
[/PHP]
Würde dann nicht ein einfaches
[PHP]
(string)$xml[0];
[/PHP]
Zum Ziel führen?
Weil ein XML-Tag mit 0 ist nicht erlaubt.
[SIZE=5]XML Naming Rules[/SIZE]
XML elements must follow these naming rules:
[ul]
[li]Names can contain letters, numbers, and other characters[/li][li]Names cannot start with a number or punctuation character[/li][li]Names cannot start with the letters xml (or XML, or Xml, etc)[/li][li]Names cannot contain spaces[/li][/ul]
Any name can be used, no words are reserved.
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