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!