====== 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' );