Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich mit SimpleXML auf XML-Knotennamen mit Bindestrich zugreifen?

Wie kann ich mit SimpleXML auf XML-Knotennamen mit Bindestrich zugreifen?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 22:02:14665Durchsuche

How Can I Access Hyphenated XML Node Names Using SimpleXML?

XML-Knoten mit getrennten Namen in SimpleXML lesen

SimpleXML, eine PHP-Bibliothek zum Parsen von XML-Dokumenten, kann beim Lesen von Knoten mit getrennten Namen auf Schwierigkeiten stoßen Namen. Betrachten Sie zum Beispiel das folgende XML:

<?xml version="1.0" encoding="UTF-8"?>
<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd">
  <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" office:version="1.1">
    <office:meta>
      <dc:creator>Mark Baker</dc:creator>
      <dc:date>2010-09-01T22:49:33Z</dc:date>
      <meta:creation-date>2010-09-01T22:48:39Z</meta:creation-date>
      <meta:editing-cycles>4</meta:editing-cycles>
      <meta:editing-duration>PT00H04M20S</meta:editing-duration>
      <meta:generator>OpenOffice.org/3.1$Win32 OpenOffice.org_project/310m11$Build-9399</meta:generator>
    </office:meta>
  </office:document-meta>
</gnm:Workbook>

Der Versuch, den Knoten „office:document-meta“ mit der Methode „children()“ von SimpleXML zu lesen, führt zu dem Fehler „Verwendung von undefiniertem konstantem Meta – angenommen ‚Meta‘“. Dies liegt daran, dass SimpleXML den Bindestrich als Subtraktionsoperator interpretiert.

Lösung

Um dieses Problem zu lösen, verwenden Sie geschweifte Klammern anstelle des Bindestrichs:

$officeXML->{'document-meta'}

Mit dieser Syntax können Sie auf die Dokument-Meta zugreifen Knoten.

Zugriff auf Attribute mit Bindestrich

Während Elementnamen mit Bindestrich die Syntax mit geschweiften Klammern erfordern, kann auf Attribute mit Bindestrich mit der regulären Array-Notation zugegriffen werden:

$root = new SimpleXMLElement($xml);
echo $root->{'hyphenated-element'}['hyphenated-attribute']; // prints "bar"

Weitere Beispiele finden Sie in der SimpleXML Basics-Dokumentation.

Das obige ist der detaillierte Inhalt vonWie kann ich mit SimpleXML auf XML-Knotennamen mit Bindestrich zugreifen?. 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