Heim >Backend-Entwicklung >PHP-Tutorial >Wie greife ich in SimpleXML auf Knotennamen mit Bindestrich zu?

Wie greife ich in SimpleXML auf Knotennamen mit Bindestrich zu?

Susan Sarandon
Susan SarandonOriginal
2024-12-13 13:37:10441Durchsuche

How to Access Hyphenated Node Names in SimpleXML?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn