Start · Sprachen · PHP · Referenz · xmlwriter_start_element

xmlwriter_start_element

Funktion

Beginnt ein neues XML-Element mit dem angegebenen Namen im prozeduralen XMLWriter-Stil.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_start_element(XMLWriter $writer, string $name): bool

Beschreibung

xmlwriter_start_element() öffnet ein neues XML-Element-Tag mit dem übergebenen Element-Namen. Das Element bleibt offen, bis es explizit mit xmlwriter_end_element() geschlossen wird. Zwischen Öffnen und Schließen können Attribute, Text-Inhalte oder weitere verschachtelte Elemente hinzugefügt werden.

Die Funktion gehört zur prozeduralen Schnittstelle des XMLWriter-Erweiterung. Die objektorientierte Entsprechung lautet XMLWriter::startElement(). Beide Varianten produzieren identische Ausgaben und sind vollständig gleichwertig.

Typische Einsatzgebiete sind die Erzeugung von RSS-Feeds, SOAP-Nachrichten, SVG-Dateien oder beliebigen XML-Dokumenten, bei denen eine präzise Kontrolle über die Ausgabe-Struktur erforderlich ist. Im Gegensatz zu xmlwriter_write_element() erlaubt xmlwriter_start_element() das Hinzufügen von Attributen und komplexen Kindelementen vor dem Schließen.

Der Element-Name muss ein gültiger XML-Name sein (kein Leerzeichen, keine Sonderzeichen als Erstes Zeichen). Für Elemente mit Namespace-Präfix steht xmlwriter_start_element_ns() zur Verfügung.

Parameter

Name Typ Default Beschreibung
$writer Pflicht XMLWriter Die XMLWriter-Instanz, die durch xmlwriter_open_memory() oder xmlwriter_open_uri() erzeugt wurde.
$name Pflicht string Der Name des zu öffnenden XML-Elements. Muss ein gültiger XML-Elementname sein, z. B. item oder rss:channel.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false wenn der Element-Name ungültig ist oder ein interner Fehler auftritt.

Beispiele

Einfaches XML-Dokument mit verschachtelten Elementen

<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, '  ');

xmlwriter_start_document($writer, '1.0', 'UTF-8');

xmlwriter_start_element($writer, 'catalog');

  xmlwriter_start_element($writer, 'book');
    xmlwriter_write_attribute($writer, 'id', 'bk101');
    xmlwriter_start_element($writer, 'title');
      xmlwriter_text($writer, 'PHP 8 Praxis');
    xmlwriter_end_element($writer); // </title>
    xmlwriter_start_element($writer, 'price');
      xmlwriter_text($writer, '29.99');
    xmlwriter_end_element($writer); // </price>
  xmlwriter_end_element($writer); // </book>

xmlwriter_end_element($writer); // </catalog>
xmlwriter_end_document($writer);

echo xmlwriter_output_memory($writer);
<?xml version="1.0" encoding="UTF-8"?> <catalog> <book id="bk101"> <title>PHP 8 Praxis</title> <price>29.99</price> </book> </catalog>

Einfachen RSS-Feed erzeugen

<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, '    ');

xmlwriter_start_document($writer, '1.0', 'UTF-8');

xmlwriter_start_element($writer, 'rss');
xmlwriter_write_attribute($writer, 'version', '2.0');

  xmlwriter_start_element($writer, 'channel');

    xmlwriter_start_element($writer, 'title');
    xmlwriter_text($writer, 'Mein Blog');
    xmlwriter_end_element($writer);

    xmlwriter_start_element($writer, 'link');
    xmlwriter_text($writer, 'https://example.com');
    xmlwriter_end_element($writer);

    // Ein Beitrag
    xmlwriter_start_element($writer, 'item');
      xmlwriter_start_element($writer, 'title');
      xmlwriter_text($writer, 'Erster Beitrag');
      xmlwriter_end_element($writer);
    xmlwriter_end_element($writer); // </item>

  xmlwriter_end_element($writer); // </channel>
xmlwriter_end_element($writer); // </rss>
xmlwriter_end_document($writer);

header('Content-Type: application/rss+xml; charset=UTF-8');
echo xmlwriter_output_memory($writer);
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> <title>Mein Blog</title> <link>https://example.com</link> <item> <title>Erster Beitrag</title> </item> </channel> </rss>

// Wichtig · Fallstricke

Offene Elemente schließen: Jeder Aufruf von xmlwriter_start_element() muss durch einen korrespondierenden Aufruf von xmlwriter_end_element() abgeschlossen werden, sonst entsteht ungültiges XML. Alternativ kann xmlwriter_full_end_element() verwendet werden, das immer einen expliziten schließenden Tag (</tag> statt />) erzeugt.

Namespace-Unterstützung: Soll das Element einem XML-Namespace angehören, muss xmlwriter_start_element_ns() verwendet werden, da xmlwriter_start_element() keine Namespace-URI verarbeitet.

Kurzschreibweise: Wenn das Element ausschließlich einfachen Text enthält und keine Attribute benötigt, ist xmlwriter_write_element() kompakter und erfordert kein manuelles Schließen.