SimpleXML Pfad aus Variable

  • servus,
    ich habe da mal ne frage zu simplexml.
    folgendes: ich möchte aus einer xml datei $xml->tag1->tag2->tag3 auslesen
    dabei verwende ich eine funktion die $xml->$pfad aufruft und in der variable $pfad steht "tag1->tag2->tag3".
    das problem ist dass dann nichts passiert. wenn $pfad nur "tag1" ist erhalte ich den wert davon, aber wie kann ich machen dass er auch tiefer in die xml struktur eingreifen kann?
    danke ;)

  • Wieso postest du nicht das Script, dass du benutzt und ein Beispiel XML ?
    Dann könntest du deine Problembeschreibung auch darauf beziehen und wir bzw. ich würde verstehen was du für ein Problem hast. ;)

    Gruß crAzywuLf :D

    Einmal editiert, zuletzt von crAzywuLf (25. Oktober 2009 um 21:57)

  • ok.
    also die xml datei

    XML
    <?xml version="1.0" encoding="utf-8"?>
    <xmldoc>
        <name>default</name>
        <desc>showing the default features</desc>
        <version>1.0</version>
        <exec>
            <head></head>
            <body>body</body>
        </exec>
    </xmldoc>


    und de php datei

    Code
    function axml($target, $key) {
                $xml = simplexml_load_file("../module/".$_SESSION['modul']."/".$target.".xml");
                $key = $xml->$key;
                settype($key, string);
                return $key;
            }

    also wenn man axml("xmldatei", "name") aufruft bekommt man default zurück.
    allerdings wenn man axml("xmldatei", "exec->body") aufruft bekommt man nix zurück. dies gilt es zu lösen.

  • Das Problem ist, das "exec->body" 2 Hashkeys sind.
    Greif mal so darauf zu:

    PHP
    <?php
    $xml = simplexml_load_file("../module/".$_SESSION['modul']."/".$target.".xml");
    
    
    $head = $xml['exec']['head'];
    $body = $xml['exec']['body'];
    ?>

    Gruß crAzywuLf :D

  • Das Problem ist, das "exec->body" 2 Hashkeys sind.
    Greif mal so darauf zu:

    PHP
    <?php
    $xml = simplexml_load_file("../module/".$_SESSION['modul']."/".$target.".xml");
    
    
    $head = $xml['exec']['head'];
    $body = $xml['exec']['body'];
    ?>

    ich will ja nicht undankbar klingen, aber leider ist das nicht genau der lösungsweg den ich mir vorgestellt habe :/
    es ist wichtig das die funktion axml() aufrecht erhalten bleibt und nicht wie hier aufgelöst wird


    EDIT: ich habe jetzt eine lösung gefunden. über xpath lässt es sich lösen. trotzdem danke ;)

    Einmal editiert, zuletzt von makroy (25. Oktober 2009 um 22:36)