Ich habe ein Problem beim Zugriff auf den @attribute
Abschnitt meines SimpleXML-Objekts. Wenn ich var_dump
das gesamte Objekt erhalte, erhalte ich die richtige Ausgabe, und wenn ich var_dump
den Rest des Objekts (die verschachtelten Tags) erhalte, erhalte ich die richtige Ausgabe, aber wenn ich den Dokumenten folge und var_dump
$xml->OFFICE->{'@attributes'}
erhalte, erhalte ich trotzdem ein leeres Objekt Das erste var_dump
zeigt deutlich, dass Attribute ausgegeben werden müssen.
Weiß jemand, was ich hier falsch mache / wie ich das zum Laufen bringen kann?
Antworten:
Sie können die Attribute eines XML-Elements abrufen, indem Sie die Funktion attribute () auf einem XML-Knoten aufrufen. Sie können dann den Rückgabewert der Funktion var_dump.
Weitere Informationen unter php.net http://php.net/simplexmlelement.attributes
Beispielcode von dieser Seite:
quelle
$b
wird so einSimpleXMLElement
Objekt seinprint_r
undvar_dump
dir seltsame Dinge geben. Sie können es als Zeichenfolge (oder was auch immer Sie möchten) umwandeln, um dies zu umgehen.Versuche dies
quelle
attributes()
das Objekt aufrufen müssen, das dem richtigen Tag in Ihrem XML entspricht. Wie wenn Sie<root><tag attr="a">b</tag></root>
dann haben, müssen Sie tun,$xml->tag->attributes()->attr
um darauf zuzugreifen.Ich habe es schon so oft benutzt, um
@attributes
wie unten zu werden, und es war ein bisschen länger.Es sollte einfacher sein und Sie können Attribute im folgenden Format nur sofort erhalten:
Standardmethode - Array-Zugriffsattribute (AAA)
Andere Alternativen sind:
Richtiges und schnelles Format
Falsche Formate
quelle
$xml->attributes()->{'field'}
,$xml->attributes()->field
und$f='field'; $xml->attributes()->$f;
sind gleich. Sehen Sie keinen Grund, warum eines ein richtiges Format und ein anderes falsch ist.Verwenden Sie
SimpleXMLElement::attributes
.Die Wahrheit ist, dass der SimpleXMLElement-
get_properties
Handler eine große Rolle spielt . Es gibt keine Eigenschaft mit dem Namen "@attributes", Sie können dies also nicht tun$sxml->elem->{"@attributes"}["attrib"]
.quelle
get_properties
Handler). Sehr interessant.Sie können einfach tun:
quelle
Wenn Sie jedoch nach einer Liste dieser Attribute suchen, ist XPath Ihr Freund
quelle
Es hat mir geholfen, das Ergebnis von simplexml_load_file ($ file) in eine JSON-Struktur zu konvertieren und zurück zu dekodieren:
quelle
Leider habe ich einen einzigartigen Build (der momentan bei Gentoo steckt) von PHP 5.5, und was ich gefunden habe, war das
war die einzige Lösung, die funktionierte. Ich habe alle oben genannten Methoden von Bora ausprobiert, einschließlich des 'Right & Quick'-Formats, und alle sind fehlgeschlagen.
Die Tatsache, dass dies das einfachste Format ist, ist ein Plus, aber ich habe nicht gerne gedacht, dass ich verrückt bin, wenn ich alle Formate ausprobiert habe, von denen andere sagten, dass sie funktionieren.
Njoy für was es wert ist (habe ich einen einzigartigen Build erwähnt?).
quelle