Array zu XML

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array zu XML

    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:

    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>
    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.
    This is what happens when an unstoppable force meets an immovable object.

  • #2
    Da habe ich doch gleich mal ne Frage. Heute in meiner Praktikumsfirma sagte mir einer, dass die Klasse XMLWriter wohl grad bei größeren XML Dateien schneller sei als DOMDocument.
    Kannst du darüber vieleicht ne Aussage machen?
    Was macht die Klasse denn schneller? Kann ich im XMLWriter auch mit XPath arbeiten?

    Ich habe mir die Klasse im Manual nicht wirklich angeschaut und meine Frage ist nur rein Interesse halber.

    Danke für eine Antwort von dir, oder von jemanden der damit nun schon Erfahrung gemacht hat.

    Gruß Litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

    Kommentar


    • #3
      Hallo Litter,

      sowohl XMLReader als auch XMLWriter benötigen weniger Ressourcen, weil sie keinen kompletten DOM-Baum erstellen oder im Speicher halten müssen. Für einfache DTDs, die wenige Hierarchieebenen haben, kann man das ausnutzen, aber bei komplexeren XML-Grammatiken (z. B. XHTML), bei denen die Hierarchie-Tiefe unbegrenzt ist, programmiert man sich mit den Dingern tot. Da Ressourcen immer billiger sind als Entwickler, sehe ich keinen dringenden Vorteil darin, unbedingt XMLReader/XMLWriter zu verwenden, weil es einfach mehr Arbeit macht.

      Davon abgesehen müssen bei der Verwendung des XMLWriters ja auch erstmal Daten da sein, die da geschrieben werden können. Wenn diese on-the-fly aus irgendeinem Datenstrom (z. B. Datenbank-Result-Set) kommen und formatiert werden, kann es Sinn machen. Wenn nicht, muss ja auch ein Dokument im Speicher gehalten werden, was dann wieder keinerlei Vorteile gegenüber DOMDocument bietet.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar

      Lädt...
      X