Signatur
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
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;
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;
}
// 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.