Ankündigung

Einklappen
Keine Ankündigung bisher.

XML: Zugriff auf Elternknoten

Einklappen

Neue Werbung 2019

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

  • XML: Zugriff auf Elternknoten

    Ich habe eine Frage bezüglich XML.

    Wie kann ich anhand eines Knotens auf dessen Elternknoten zugreifen?

    Das XML File lese ich ein mit
    $xml = simplexml_load_file($filename);

  • #2
    Mit XPath.
    PHP-Code:
    <?php
    $string 
    = <<<XML
    <a>
     [b]
      <c>text</c>
      <c>stuff</c>
     [/b]
     <d>
      <c>code</c>
     </d>
    </a>
    XML;
    $xml simplexml_load_string($string);


    $child $xml->b->c;
    $parent $child->xpath('..');
    var_dump($parent);
    ?>

    Kommentar


    • #3
      Danke für die Antwort, Bruchpilot. Ich verstehe jedoch nicht, warum folgender code nicht "bbb" ausgibt. Was mach ich falsch?

      PHP-Code:
      <?php
      $string 
      = <<<XML
      <a>
       <b name="bbb">
        <c name="ccc">text</c>
       [/b]
      </a>
      XML;
      $xml simplexml_load_string($string);

      $child $xml->b->c;
      $parent $child->xpath('..');
      echo 
      $parent[name];

      ?>

      Kommentar


      • #4
        PHP-Code:
        <?php
        $string 
        = <<<XML
        <a>
         <b name="bbb">
          <c name="ccc">text</c>
         [/b]
        </a>
        XML;
        $xml simplexml_load_string($string);

        $child $xml->b->c;
        $child $child->xpath('c/..');
        echo 
        $child[0]['name'];
        ?>
        "Wieso" entzieht sich aber gerade auch komplett meinem Verständnis...

        Kommentar


        • #5
          Danke nochmals Bruchpilot, nun klappt es.
          Habe ein wenig über xpath nachgeforscht und erfahren, dass dies immer ein Array zurückliefert. Daher muss es

          PHP-Code:
          echo $child[0]['name']; 
          heissen. Deine alte Zeile mit dem xpath

          $parent = $child->xpath('..');

          war aber durchaus korrekt, da braucht es kein 'c/' dazu.

          Thank you.

          Kommentar


          • #6
            Seltsam, hier braucht es das c/
            nur mit .. erfolgt eine leere Ausgabe.

            (ja, das mit dem Feld war mir klar; deshlab auch das var_dump() im Beispiel )

            Kommentar

            Lädt...
            X