Heim >Backend-Entwicklung >PHP-Tutorial >Wie greife ich in SimpleXML auf Knotennamen mit Bindestrich zu?
SimpleXML-Leseknoten mit Namen mit Bindestrich
In XML können Bindestriche in Knotennamen verwendet werden, um die Lesbarkeit zu verbessern. Allerdings können diese Namen mit Bindestrich eine Herausforderung darstellen, wenn SimpleXML zum Parsen des XML-Dokuments verwendet wird.
Problem
Beim Versuch, mit SimpleXML auf einen Knoten mit einem Namen mit Bindestrich zuzugreifen, Benutzer können auf einen Fehler oder falsche Ergebnisse stoßen. Zum Beispiel mit dem folgenden XML:
<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" ...> <office:document-meta ...> ... </office:document-meta> </gnm:Workbook>
Der Versuch, mit der Standardsyntax auf den Knoten „document-meta“ zuzugreifen:
$docMeta = $officeXML->document-meta;
führt zu einem Fehler oder einem falschen Ganzzahlwert .
Lösung
Um korrekt auf einen Knoten mit a zuzugreifen Geben Sie in SimpleXML einen Namen mit Bindestrich ein, schließen Sie den Knotennamen in geschweifte Klammern ein:
$docMeta = $officeXML->{'document-meta'};
Diese Syntax weist SimpleXML an, den Namen mit Bindestrich als Zeichenfolge zu behandeln und den Knoten anhand seines spezifischen Namens zu suchen.
Attributzugriff
Beachten Sie, dass diese Syntax mit geschweiften Klammern nur für den Zugriff erforderlich ist Elementknoten. Auf Attribute mit getrennten Namen kann mithilfe der Standard-Array-Notation zugegriffen werden:
$attribute = $node['hyphenated-attribute'];
Alternative Methode
Wenn die Syntax mit geschweiften Klammern nicht bevorzugt wird, ist eine alternative Methode zu verwenden die folgende Notation:
$docMeta = $officeXML->{'office:document-meta'};
Diese explizite Namespace-Deklaration stellt sicher, dass SimpleXML nach dem Knoten innerhalb des angegebenen sucht Namespace.
Fazit
Durch die Verwendung von geschweiften Klammern oder expliziter Namespace-Deklaration können Benutzer Knoten mit getrennten Namen in XML-Dokumenten mit SimpleXML erfolgreich lesen.
Das obige ist der detaillierte Inhalt vonWie greife ich in SimpleXML auf Knotennamen mit Bindestrich zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!