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

Wie greife ich mit SimpleXML in PHP auf XML-Knotennamen mit Bindestrich zu?

Patricia Arquette
Freigeben: 2024-12-14 04:52:10
Original
944 Leute haben es durchsucht

How to Access Hyphenated XML Node Names Using SimpleXML in PHP?

XML-Knoten mit getrenntem Namen mithilfe von SimpleXML lesen

In PHP wird die Verwendung von SimpleXML zum Extrahieren von Daten aus XML-Dokumenten zu einer Herausforderung, wenn Sie auf Elemente mit stoßen Namen mit Bindestrich. Lassen Sie uns dieses Problem untersuchen und eine Lösung finden.

Betrachten Sie das folgende XML:

<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>
Nach dem Login kopieren

Um das document-meta-Element und seine untergeordneten Elemente zu lesen, betrachten Sie das Folgender Anfangscode:

$xml = simplexml_load_string($gFileData);
$namespacesMeta = $xml->getNamespaces(true);
$officeXML = $xml->children($namespacesMeta['office']);
var_dump($officeXML);

echo '<hr />';
Nach dem Login kopieren

Dieser Code speichert alle unmittelbar untergeordneten Elemente von office-Element, das document-meta enthält. Der Versuch, mit $officeXML->document-meta direkt auf document-meta zuzugreifen, schlägt jedoch fehl und gibt int 0 zurück.

Der Grund für dieses Verhalten liegt in der Handhabung von Namen mit Bindestrich durch SimpleXML. Standardmäßig werden Elementnamen mit Bindestrich in „camelCase“ konvertiert. In diesem Fall wird „document-meta“ zu „documentMeta“. Um auf dieses Element zuzugreifen, verwenden Sie die folgende Syntax:

$docMeta = $officeXML->{'document-meta'};
var_dump($docMeta);
Nach dem Login kopieren

Durch die Verwendung von geschweiften Klammern und String-Notation können Sie auf den tatsächlichen Elementnamen ohne die standardmäßige Groß-/Kleinschreibungsumwandlung von SimpleXML zugreifen. Dadurch wird das Element document-meta erfolgreich ausgegeben.

Hinweis: Diese Syntax gilt nur für Elementknoten. Auf Attributknoten innerhalb von @attributes kann direkt über die Array-Notation zugegriffen werden, unabhängig von ihrer Silbentrennung.

Das obige ist der detaillierte Inhalt vonWie greife ich mit SimpleXML in PHP auf XML-Knotennamen mit Bindestrich zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage