simpleXML deleteChild?

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

  • simpleXML deleteChild?

    Hi,
    ich weis zwar wie man Attribute (addAttribute)
    und ChildNodes (addChild) per Simple XML setzt,
    aber wie lösch ich den eigentlich welche???
    Hab bis jetzt nirgends einen Befehl dazu gefunden.
    Sowas wie deleteChild wäre ganz nützlich

    mfg & thx darki

  • #2
    sowas wie deleteChild scheint es nicht zu geben. Hier gibts mehr Infos.

    Warum liest du nicht das aus der XML-File aus, was du brauchst und überschreibst dann die alte File mit einer neu generierten?
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Habs nu mit unset(...) gelöst, hätt nicht gedacht dass das geht,
      aber gut, so brauch ich ned extra die ganze XML File nach dem
      zu löschenden Eintrag durchsuchen.

      Trotzdem danke, mfg darki

      Kommentar


      • #4
        Original geschrieben von XGremliN
        sowas wie deleteChild scheint es nicht zu geben.
        Eventuell "funzt" es ja, einfach unset() auf den entsprechenden Teilknoten in der Objektstruktur loszulassen ...? (k.A., hab's nicht ausprobiert.)

        Ansonsten ist SimpleXML halt doch für, nun ja - "simple" Anwendungsfälle gedacht, und nicht für sämtliches Voodoo, was man mit dem DOM anstellen kann, gedacht.
        Dann im Zweifelsfalle eben doch die DOM-Funktionen benutzen - SimpleXML- und DOM-Objekte sind ja jederzeit im Scriptverlauf in einander kovertierbar.
        Warum liest du nicht das aus der XML-File aus, was du brauchst und überschreibst dann die alte File mit einer neu generierten?
        Na das wird er ja vielleicht auch machen wollen - nur wenn man mit XML arbeitet, dann will man das wohl idR. auch auf eine "saubere" Art und Weise machen, und nicht in dem man mit Stringfunktionen etwas aus dem XML-Code rausschnippselt o.ä.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Danke, werd mir das mit DOM mal anschaun, momentan reicht
          mir aber die unset() lösung da die Aufgabe, bzw. die XML Datei nicht sonderlich komplex ist dass sich hier DOM lohnen würde

          mfg darki
          Zuletzt geändert von darki777; 22.01.2007, 09:21.

          Kommentar


          • #6
            Logik Fehler - XML DB Einträge löschen

            Hi,
            hab nu einen Logikfehler in meinem Script, und ich kann machen
            was ich will, ich finds einfach nicht heraus was ich falsch mach,
            ich habe ein Formular das die Einträge in einer XML Datenbank
            ausließt, hier kann man nun neue Eintragungen machen oder
            auch welche löschen, mit dem Eintragen klappt alles, mit dem
            Löschen soweit auch, es sei den ich möchte mehrere Einträge
            gleichzeitig über die Checkboxen löschen, dann löscht er mir
            teils eine darüberliegende Eintragung raus.

            PHP-Code:
            //Hier werden X Checkboxen abhängig von der XML DB erstellt
            //...
                
            echo "<table border=0>\n";
                for(
            $i=0$i<count($xml->buero->links); $i++)
                {
                    echo 
            "<tr>\n";
                    
                    echo 
            "\t<td>Eintrag ".utf8_decode($xml->buero->links[$i]["name"])." l&ouml;schen</td>\n";
                    echo 
            "\t<td><input type=\"checkbox\" name=\"delete_".$i."\" title=\"Eintrag löschen\" value=\"".$i."\"></td>\n";
                    
                    echo 
            "</tr>\n";
                }
                echo 
            "</table>";
            //...

            //...
            //Und hiermit lösche ich Eintragungen
                //Einträge löschen:
                
            for($j=0$j<count($xml->buero->links); $j++)
                {
                    if(isset(
            $_POST["delete_$j"]))
                    {
                        unset(
            $xml->buero->links[$j]);
                    }
                }
            //END 
            //... 
            Zuletzt geändert von darki777; 22.01.2007, 12:25.

            Kommentar


            • #7
              Re: Logik Fehler - XML DB Einträge löschen

              Kontrollausgabe Strukur vor/nach Löschen eines Wertes?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Hoffe das ist jetzt nicht zuviel Quellcode:
                (Bei diesem Beispiel hab ich zum Testen
                robert b und team gelöscht)

                Das wäre das dynamisch erzeuge Formular:
                PHP-Code:
                <form action="/test/test_02/test_02.php" method="post">
                    
                Neuer Eintrag:&nbsp;<input type="text" name="eintrag" size="25" title="Neuer Eintrag"><br />
                    
                    <
                table border=0>
                <
                tr>
                    <
                td>Eintrag büro l&ouml;schen</td>
                    <
                td><input type="checkbox" name="delete_0" title="Eintrag löschen" value="0"></td>
                </
                tr>
                <
                tr>
                    <
                td>Eintrag robert b l&ouml;schen</td>

                    <
                td><input type="checkbox" name="delete_1" title="Eintrag löschen" value="1"></td>
                </
                tr>
                <
                tr>
                    <
                td>Eintrag team l&ouml;schen</td>
                    <
                td><input type="checkbox" name="delete_2" title="Eintrag löschen" value="2"></td>
                </
                tr>
                <
                tr>
                    <
                td>Eintrag links l&ouml;schen</td>
                    <
                td><input type="checkbox" name="delete_3" title="Eintrag löschen" value="3"></td>

                </
                tr>
                </
                table>    
                    <
                input name="send" type="submit" value="&Auml;nderungen speichern">    
                    <
                input name="reset" type="reset" value="Einstellungen zur&uuml;cksetzten">
                </
                form
                XML Datenbank vor der Änderung:
                PHP-Code:
                <?xml version="1.0" encoding="utf-8"?>
                <root>
                    <!-- BÜRO: -->
                    <buero>
                        <links name="büro" url="buero"/>                        
                        <links name="robert b" url="robert_b"/>                               
                        <links name="team" url="team"/>                                    
                        <links name="links" url="links"/>                            
                    </buero>
                </root>

                XML Datenbank nach der Änderung:
                PHP-Code:
                <?xml version="1.0" encoding="utf-8"?>
                <root>
                    <!-- BÃœRO: -->
                    <buero>
                        <links name="büro" url="buero"/>                                        
                        <links name="team" url="team"/>                          
                    </buero>
                </root>
                Nun hat er mir hier aber z.B. "links" statt "team" gelöscht,
                robert b allerdings schon, ich glaub der löscht den Wert aus
                der DB raus und der Index wird in der Schleife dadurch irgendwie
                falsch behandelt, bzw. verzieht sich um 1, wie kann ich das
                umgehn? nur mit -1 etc. kann ich da schlecht arbeiten, weil wenn
                ich auf einmal 5 einträge löschen will steh ich wieder da :/

                mfg & thx
                Zuletzt geändert von darki777; 22.01.2007, 13:17.

                Kommentar


                • #9
                  Original geschrieben von darki777
                  Hoffe das ist jetzt nicht zuviel Quellcode:
                  Doch, ist es - dein HTML interessiert an dieser Stelle überhaupt nicht, sondern nur dein internes SimpleXML-Objekt (bzw. dessen Unterknotenstruktur an der spezifischen Position).

                  ich glaub der löscht den Wert aus
                  der DB raus und der Index wird in der Schleife dadurch irgendwie
                  falsch behandelt, bzw. verzieht sich um 1, wie kann ich das
                  umgehn?
                  Dass die Indizes dynamisch angepasst werden, davon würde ich ausgehen - ist schließlich in bspw. der DOM-Implementation in Javascript auch nicht anders, eine NodeList repräsentiert dort immer den aktuellen Zustand des Dokumentes.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar

                  Lädt...
                  X