Hallo Leute,
wollte hier auch mal ein kleines Skript einstellen, was ich entwickelt habe.
Es handelt sich um eine Mapperklasse, mit welcher sich eine Array-Struktur in XML umwandeln lässt.
Eigentlich ist das ziemlich bescheuert, da es ja simplexml und Konsorten gibt, aber wie das nunmal so ist war es für ein Kundenprojekt mit einer grottigen API, die ein direktes bearbeiten der Daten in XML unmöglich machte... die einzige Chance die ich hatte war, alles in Arrays zu tun und erst ganz am Ende ein XML daraus zu erzeugen.
Wie dem auch sei; das ganze ist hier zu finden: https://github.com/ApoY2k/ArrayXmlMapper und funktioniert (beispielhaft) folgendermaßen:
Auch wenn ich bezweifle, dass ich dieses Ding jemals wieder brauchen werde, fand ich die Entwicklung ziemlich spannend, also dachte ich; Warum nicht mal hier reinstellen... Wer weiß, wann es dochmal jemand brauchen könnte.
wollte hier auch mal ein kleines Skript einstellen, was ich entwickelt habe.
Es handelt sich um eine Mapperklasse, mit welcher sich eine Array-Struktur in XML umwandeln lässt.
Eigentlich ist das ziemlich bescheuert, da es ja simplexml und Konsorten gibt, aber wie das nunmal so ist war es für ein Kundenprojekt mit einer grottigen API, die ein direktes bearbeiten der Daten in XML unmöglich machte... die einzige Chance die ich hatte war, alles in Arrays zu tun und erst ganz am Ende ein XML daraus zu erzeugen.
Wie dem auch sei; das ganze ist hier zu finden: https://github.com/ApoY2k/ArrayXmlMapper und funktioniert (beispielhaft) folgendermaßen:
PHP-Code:
<?php
require_once 'ArrayXmlMapper.php';
// Create a new XMLWriter instance that you can configure as you see fit
$writer = new XmlWriter();
// Create the ArrayXmlMapper instance and pass the writer to it
$axm = new ArrayXmlMapper($writer);
// Pass an array to the mapper and get the parsed xml structure
$xml = $axm->getAsXml(array('root' => array(
'level1' => array(
ArrayXmlMapper::AXM_SIBLINGS,
'level11' => array(
ArrayXmlMapper::AXM_ATTRIBUTES => array(
'att1' => 'val1'
),
ArrayXmlMapper::AXM_CDATA => 'text11'
),
'level12' => array(
ArrayXmlMapper::AXM_CDATA => 'text12'
)
)
)));
Code:
<root> <level1> <level11 att1="val1"><![CDATA[text11]]></level11> <level12><![CDATA[text12]]></level12> </level1> </root>
Kommentar