$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();
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 ) ); } } }
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 ) ); } } }
Aufruf:
$DOM = new DOMDocument; $request = $DOM->appendChild( $DOM->createElement( 'request' ) ); UpdateNode( $DOM, $request, $_POST['Stammdaten'] ); InsertNode( $DOM, $request, "Vertragsdaten", $_POST['Vertragsdaten'] );
Ergebnis:
<request> <Strasse>Lindenstraße 3</Strasse> <PLZ>81545</PLZ> <Ort>München</Ort> <Vertragsdaten> <id_0>6APG2</id_0> <id_1>6AT4N</id_1> </Vertragsdaten> </request>
Bestimmte Zeichen dürfen in einem XML-Dokument nicht vorkommen und müssen zuvor umgewandelt werden:
Mit der PHP-Funktion htmlspecialchars können diese Zeichen umgewandelt werden: