Ankündigung

Einklappen
Keine Ankündigung bisher.

XML - Eintrag löschen

Einklappen

Neue Werbung 2019

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

  • XML - Eintrag löschen

    Hi!

    Hab eine Frage zu XML und PHP.
    Ich habe folgendes XML-Dokument (info.xml):

    Code:
    <?xml version="1.0" standalone="yes"?>
    <bildergalerien>
    <galerie>
    	<id>4</id>
        <title>test4</title>
    	<pfadgross>test4</pfadgross>
    	<pfadthumbs>test4</pfadthumbs>
        <author>test4</author>
    </galerie><galerie>
    	<id>3</id>
        <title>test3</title>
    	<pfadgross>test3</pfadgross>
    	<pfadthumbs>test3</pfadthumbs>
        <author>test3</author>
    </galerie></bildergalerien>
    Nun möchte ich die Daten (mit dem <galerie>) des ersten Galerie- Eintrages mit PHP löschen. Hab im Internet nichts gefunden, das bei mir auch funktioniert hat. Könnt Ihr mir da einen Tipp geben?

    thx
    header

  • #2
    Lese die XML mit einem XML-Parser ein, entferne den Node und schreibe das XML wieder.

    Welche PHP Version hast du denn zur Verfügung?

    Kommentar


    • #3
      PHP 5
      Könntest du es ein wenig genauer ausführen?
      Mit simplexml geht das wohl nicht mehr oder?

      Kommentar


      • #4
        Ganz ehrlich, hosterbedingt bin ich kein PHP5-Freak - was PHP5 hausintern bietet weiß ich schändlicherweise deshalb nicht.

        Wenn du nicht warten willst, bis jemand mit PHP5 und XML-Ahnung hier antwortet, schau mal hier vorbei:
        http://de.php.net/xml
        http://pear.php.net/packages.php?catpid=22&catname=XML

        Kommentar


        • #5
          Wenn es eine einfachere verläßliche Vorgehensweise gibt, nur her damit.
          PHP-Code:
          <?php
          $xml 
          = <<< eot
          <?xml version="1.0" standalone="yes"?>
          <bildergalerien>
          <galerie>
             <id>4</id>
              <title>test4</title>
             <pfadgross>test4</pfadgross>
             <pfadthumbs>test4</pfadthumbs>
              <author>test4</author>
          </galerie><galerie>
             <id>3</id>
              <title>test3</title>
             <pfadgross>test3</pfadgross>
             <pfadthumbs>test3</pfadthumbs>
              <author>test3</author>
          </galerie></bildergalerien>
          eot;

          $doc = new DOMDocument();
          $doc->loadXML($xml);

          $xpath = new DOMXPath($doc);
          /*
           alle Elemente galerie im Dokument auswählen -> //galerie
           alle Elemente galerie mit einer bestimmten Eigenschaft auswählen -> //galerie[eigenschaft]
           alle Elemente galerie mit der Eigenschaft "erster Eintrag im Ergebnis" auswählen -> //galerie[position()=1]
           -> nur das erste galerie Element im Ergebnis
          */
          $result $xpath->query('//galerie[position()=1]');

          /*
          Das Ergebnis ist trotzdem eine Liste,
          mit maximal einem Eintrag
          */
          if ($result!==false && $result->length>0) {
              
          /*
                  Den Elternknoten anweisen,
                  dieses Element zu entfernen
              */
              
          $element $result->item(0);
              
          $element->parentNode->removeChild($element);
          }

          echo 
          $doc->saveXML();
          ?>
          Tutorial zu XPath: http://www.w3schools.com/xpath/

          Kommentar


          • #6
            Vielen Dank, funktioniert tip-top!

            Kommentar


            • #7
              Hab trotzdem noch eine Frage zu Xpath. Leider steht nichts darüber im Tutorial:

              PHP-Code:
              <?php
              $result 
              $xpath->query('//galerie[id=1]');
              ?>
              funktioniert, jedoch

              PHP-Code:
              <?php
              $test 
              1;
              $result $xpath->query('//galerie[id=$test]');
              ?>
              nicht. Kann mir jemand sagen warum, oder wie ich es richtig schreiben sollte, damit es geht
              gruss
              header

              Kommentar


              • #8
                Teste mal

                PHP-Code:
                <?php
                $name 
                'Peter';
                print 
                'Hallo $name';
                print 
                '
                '
                ;
                print 
                "Hallo $name";
                ?>
                merkst du was?

                Kommentar


                • #9
                  Zitat von Header
                  Leider steht nichts darüber im Tutorial:
                  Klar, das tutorial beschäftigt sich mit xpath, nicht mit php.
                  $xpath->query('//galerie[id=$test]');
                  Die Methode query() wird mit einem Parameter aufgerufen, einer Zeichenkette. Und nur diese Zeichenkette wird von xpath ausgewertet. Wie sie zustande gekommen ist, ist für xpath völlig egal.
                  xpath ist ja auch nicht für php geschrieben. Unter Perl, C, Visual Basic, Ruby und wie sie alle heissen funktioniert es analog.

                  Um Zerglings Beispiel noch etwas auszubauen:
                  PHP-Code:
                  <?php
                  $xquery 
                  '//galerie[id=$test]';
                  echo 
                  '<div>query: '$xquery"</div>\n";
                  $xpath->query($xquery); 
                  ?>

                  Kommentar


                  • #10
                    ja, mittlerweile hab ich es auch so gelöst, aber danke für die antwort!
                    gruss
                    header

                    Kommentar

                    Lädt...
                    X