Ankündigung

Einklappen
Keine Ankündigung bisher.

[simpleXML] Gesamten Knoten kopieren

Einklappen

Neue Werbung 2019

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

  • [simpleXML] Gesamten Knoten kopieren

    Hallo zusammen!

    Ich bin zwar selten hier, aber ich hoffe, ihr helft mit trotzdem

    Ich habe einen XML-Baum wie folgt:

    Code:
    <category>
        <title>Testkategorie 1</title>
        <page>
            <name>Testseite</name>
            <url>pfad</url>
        </page>
    </category>
    
    <category>
        <title>Testkategorie 2</title>
        <page>
            <name>Testseite</name>
            <url>pfad</url>
        </page>
    </category>
    Nun möchte ich einen kompletten Knoten <category> in ein neues simpleXML-Objekt kopieren. Zum Beispiel so:

    PHP-Code:
    $targetXML->category[0] = $sourceXML->category[0]; 
    Aber das funktioniert nicht. Wie macht man es richtig ...?

    Bin dankbar für jeden Tipp

  • #2
    Herzlich willkommen!

    Ich bin zwar selten hier, aber ich hoffe, ihr helft mit trotzdem :S
    Was willst du uns denn damit sagen. Natürlich helfen wir dir, solange du dich an die Forenrichtlinien hältst.

    Für das Klonen von Knoten und generell für die Bearbeitung solltest du dir mal die DOM-Erweiterung von PHP ansehen.

    Kommentar


    • #3
      Dafür bräuchtest Du bei SimpleXML etwas gleichwertiges zu
      Zitat von http://uk.php.net/manual/en/domdocument.importnode.php
      DOMDocument::importNode ( DOMNode $importedNode [, bool $deep ] )
      Soweit ich weiß, kann SimpleXML das nicht. Aber Du kannst zwischen SimpleXML und DOM wechseln mit den Funktionen [man]dom_import_simplexml[/man] und [man]simplexml_import_dom[/man]

      Kommentar


      • #4
        Danke für die Tipps. Ich will mich auf simpleXML beschränken, da das zumindest ab Version 5 überall gleich unterstützt wird.

        Ich habe es jetzt so gemacht:

        PHP-Code:
        $XMLstring '';

        foreach(
        $sourceXML->category as $category) {
            
        XMLstring .= category->asXML();

        Ich speichere alle <category> in einem String und …

        PHP-Code:
        $targetXML = simplexml_load_string('<?xml version="1.0" encoding="utf-8"?><database>' . $XMLstring . '</database>');
        … speichere sie dann auf diese Weise in einem neuen simpleXML-Objekt.

        Das mag bei diesem Beispiel wenig Sinn ergeben, aber in der Praxis kann man in der Schleife die einzelnen Kategorie-Elemente inklusive der Inhalte sortieren, verschieben, duplizieren etc.

        Vielleicht hilft‘s ja mal jemandem.

        Kommentar

        Lädt...
        X