Start · Sprachen · PHP · Referenz · CommonMark\Render\XML

CommonMark\Render\XML

Funktion

Rendert ein CommonMark-Dokument-Objekt als XML-String.

Kategorie: misc

Signatur

CommonMark\Render\XML(CommonMark\Node\Document $document): string

Beschreibung

CommonMark\Render\XML ist Teil der CommonMark-Erweiterung für PHP (pecl/commonmark) und wandelt ein geparste Dokument-Knoten-Objekt (CommonMark\Node\Document) in eine XML-Darstellung um. Diese XML-Darstellung entspricht dem internen AST (Abstract Syntax Tree) des CommonMark-Parsers und kann für Debugging, Weiterverarbeitung oder Serialisierung des Dokumentbaums genutzt werden.

Typischerweise wird zuerst CommonMark\Parse aufgerufen, um Markdown-Text in ein Document-Objekt zu überführen, welches anschließend mit dieser Funktion in XML gerendert wird. Das erzeugte XML spiegelt die Baumstruktur des Dokuments wider (Absätze, Überschriften, Listen, Inline-Elemente usw.).

Im Gegensatz zu CommonMark\Render\HTML eignet sich die XML-Ausgabe nicht zur direkten Darstellung im Browser, sondern eher zur maschinellen Weiterverarbeitung, Analyse oder für Werkzeuge, die den AST benötigen.

Parameter

Name Typ Default Beschreibung
$document Pflicht CommonMark\Node\Document Das geparste CommonMark-Dokument-Objekt, das zuvor typischerweise via CommonMark\Parse() erzeugt wurde.

Rückgabewert

Typ
string
Beschreibung
Gibt den vollständigen XML-String zurück, der den AST (Abstract Syntax Tree) des CommonMark-Dokuments repräsentiert.

Beispiele

Markdown zu XML rendern

<?php
// Markdown-Text parsen
$markdown = "# Hallo Welt\n\nDies ist ein **Beispiel**-Absatz.";
$document = CommonMark\Parse($markdown);

// Als XML ausgeben
$xml = CommonMark\Render\XML($document);
echo $xml;
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE document SYSTEM "CommonMark.dtd"> <document xmlns="http://commonmark.org/xml/1.0"> <heading level="1"> <text xml:space="preserve">Hallo Welt</text> </heading> <paragraph> <text xml:space="preserve">Dies ist ein </text> <strong> <text xml:space="preserve">Beispiel</text> </strong> <text xml:space="preserve">-Absatz.</text> </paragraph> </document>

AST-Analyse: XML für Debugging nutzen

<?php
// Komplexeres Markdown-Dokument parsen
$markdown = "## Liste\n\n- Punkt 1\n- Punkt 2\n\n> Ein Zitat";
$document = CommonMark\Parse($markdown);

// XML-Darstellung für Debugging
$xml = CommonMark\Render\XML($document);

// XML mit SimpleXML weiterverarbeiten
$xmlObject = simplexml_load_string($xml);
foreach ($xmlObject->children() as $node) {
    echo "Element: " . $node->getName() . PHP_EOL;
}
Element: heading Element: list Element: block_quote

// Wichtig · Fallstricke

Erweiterung erforderlich: Diese Funktion ist Teil der PECL-Erweiterung commonmark, die separat installiert werden muss (pecl install commonmark). Sie ist nicht in der PHP-Standardinstallation enthalten.

Die erzeugte XML-Ausgabe enthält keine sicherheitskritischen Einschränkungen bezüglich des Eingabe-Markdowns — da die Ausgabe XML (kein HTML) ist, besteht kein direktes XSS-Risiko. Wird die XML-Ausgabe jedoch in nachgelagerten Prozessen weiterverarbeitet (z. B. XSLT-Transformationen), sollte die Eingabe dennoch validiert werden.

Die XML-Struktur orientiert sich am CommonMark-Standard-DTD und kann sich bei Versions-Updates der Erweiterung ändern.