====== XML-Dokument mit DOM erstellen ======
==== Einfaches Beispiel ====
$dom = new DOMDocument( '1.0', 'UTF-8' );
$dom->xmlStandalone = true;
$dom->formatOutput = true;
$adressen = $dom->createElement( 'Adressen' );
$dom->appendChild( $adressen );
$lieferanschrift = $dom->createElement( 'Lieferanschrift' );
$lieferanschrift->appendChild( $dom->createElement( 'Strasse', 'Teststraße' ) );
$lieferanschrift->appendChild( $dom->createElement( 'Postleitzahl', 12345 ) );
$lieferanschrift->appendChild( $dom->createElement( 'Ort', 'Testort' ) );
$adressen->appendChild($lieferanschrift );
$rechnungsanschrift = $dom->createElement( 'Rechnungsanschrift' );
$rechnungsanschrift->appendChild( $dom->createElement( 'Strasse', 'Teststraße' ) );
$rechnungsanschrift->appendChild( $dom->createElement( 'Postleitzahl', 12345 ) );
$rechnungsanschrift->appendChild( $dom->createElement( 'Ort', 'Testort' ) );
$adressen->appendChild( $rechnungsanschrift );
echo $dom->saveXML();
----
==== Erweiterung eines bestehendem DOM-Objektes um Elemente aus einem Array ====
function UpdateNode( $domObj, $nodeObj, $Array )
{
if( count( $Array ) > 0 )
{
foreach( $Array as $Tag => $TextNode ) // XML aus allen Formulardaten erstellen
{
$Tag = ( is_numeric( $Tag ) ) ? "id_" . $Tag : $Tag; // num. Array durch Präfix erg.
$Entry = $nodeObj->appendChild( $domObj->createElement ( $Tag ) );
$Entry->appendChild( $domObj->createTextNode( $TextNode ) );
}
}
}
==== Erweiterung eines Bestehendes DOM-Objekt um einen XML-Knoten: ====
function InsertNode( $domObj, $Element, $nodeName, $Array )
{
$nodeObj = $Element->appendChild( $domObj->createElement( $nodeName ) );
if( count( $Array ) > 0 )
{
foreach( $Array as $Tag => $TextNode ) // XML aus allen Formulardaten erstellen
{
$Tag = ( is_numeric( $Tag ) ) ? "id_" . $Tag : $Tag; // num. Array durch Präfix erg.
$Entry = $nodeObj->appendChild( $domObj->createElement( $Tag ) );
$Entry->appendChild( $domObj->createTextNode( $TextNode ) );
}
}
}
----
==== Beispiel für Aufruf der beiden oben aufgeführten Funktionen ====
**Aufruf:**
$DOM = new DOMDocument;
$request = $DOM->appendChild( $DOM->createElement( 'request' ) );
UpdateNode( $DOM, $request, $_POST['Stammdaten'] );
InsertNode( $DOM, $request, "Vertragsdaten", $_POST['Vertragsdaten'] );
**Ergebnis:**
Lindenstraße 3
81545
München
6APG2
6AT4N
==== Troubleshooting ====
Bestimmte Zeichen dürfen in einem XML-Dokument nicht vorkommen und müssen zuvor umgewandelt werden:
* & (kaufmännisches UND)
* < (kleiner als)
* > (größer als)
Mit der PHP-Funktion htmlspecialchars können diese Zeichen umgewandelt werden:
* $val = htmlspecialchars( $val, ENT_XML1, 'UTF-8' );