tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
3546
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ritchizzle Ritchizzle ist offline Rookie
    Registriert seit
    Jul 2006
    Beiträge
    8
    Guten Tag zusammen

    Ich habe ein kleines Problem, und zwar habe ich folgendes XML & PHP - Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
     
    <root>
       <structure id="3" name="name" lang="de">
          [COLOR="Blue"]<folder[/COLOR] id="279" name="Datenpool">
             [COLOR="Blue"]<folder[/COLOR] id="278" name="Bücher">
               
    [COLOR="Red"]            <object id="9386" type="5" typename="beitrag">
                   <name>test1</name>
                   <stable_since>1236680370</stable_since>
                   <publishing>01.02.2009</publishing>
                   <expiration>09.04.2009</expiration>
                 </object>[/COLOR]
     
    [COLOR="Red"]             <object id="9383" type="5" typename="beitrag">
                    <name>test2</name>
                    <stable_since>1236680414</stable_since>
                    <publishing>10.03.2009</publishing>
                    <expiration>10.04.2009</expiration>
                  </object>[/COLOR]
     
    [COLOR="Red"]              <object id="9391" type="5" typename="beitrag">
                     <name>test3</name>
                     <stable_since>1236011220</stable_since>
                     <publishing>02.03.2009</publishing>
                     <expiration>02.03.2010</expiration>
                  </object>[/COLOR]
               </folder>
            
            [COLOR="Blue"]<folder [/COLOR]id="280" name="Zeitschriften">
               [COLOR="Blue"]<folder[/COLOR] id="284" name="T1">
     
    [COLOR="Red"]              <object id="9390" type="5" typename="beitrag">
                     <name>Test4</name>
                        <stable_since>1235579427</stable_since>
                        <publishing>09.02.2009</publishing>
                        <expiration>13.02.2010</expiration>
                  </object>[/COLOR]
             
               </folder>
            </folder> 
         </folder>
      </structure>
    </root>


    PHP-Code:
    $xmlStr file_get_contents('http://xxxx.de/test.xml');

    $xml = new SimpleXMLElement($xmlStr);
    $result $xml->xpath('/root'); 
    Nun würde ich gerne mit xpath() jeweils nur die Objekte (rot) auslesen, jedoch habe ich nun das Problem, dass die Objekte jeweils n-mal in sogennante Folders (blau) unterteilt sind.

    Gibt es eine Möglichkeit das das Resultat nur nach Objects zu durchsuchen?

    Vielen Dank für Eure Antworten

    Gruss

    ritchizzle
     

  2. #2
    Avatar von Avedo
    Avedo Avedo ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Göttingen
    Beiträge
    387
    Ist nur so eine Idee.
    MfG, Andy

    PHP-Code:
    // load simplexml object
    $xml = new SimpleXMLElement($string);

    // initiate path
    $path '/root';

    // check for a sub result
    while( $result $xml->xpath($path) )
    {
        
    // add objects to result array
        
    $objects[] = $result->object ;

        
    // add one layer to path
        
    $path .= '/folder';

     
    Association for Valid wEb DevelOpment - Informatik, Programmierung & Webdesign
    http://www.avedo.net

  3. #3
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Versuch mal das:

    PHP-Code:
    <?php
    function retrieveElements($elements null)
    {
        if(
    $elements == null)
        {
            throw new 
    Exception("Elements must not be null!");
        }
            
        
    $result = array();
        
        foreach(
    $elements as $element)
        {
            if( 
    property_exists($element"folder") )
            {
                
    $result array_merge($resultretrieveElements($element->folder));
            }
            else
            {
                foreach(
    $element->object as $object)
                    
    $result[] = $object;
            }
        }
        
        return 
    $result;
    }

    try
    {
        
    $fc file_get_contents('test.xml');
        
    $xml simplexml_load_string($fc);
        
        
    $elements $xml->xpath('/root/structure/folder');
        
        foreach(
    retrieveElements($elements) as $element)
        {
            echo 
    "<pre>";
            
    var_dump($element);
            echo 
    "</pre>";
        }
    }
    catch(
    Exception $e)
    {
        echo 
    $e->getMessage();
    }
    ?>
    Grüße
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  4. #4
    Ritchizzle Ritchizzle ist offline Rookie
    Registriert seit
    Jul 2006
    Beiträge
    8
    Wow vielen Dank für eure schnellen Antworten. Es funktioniert tadellos
     

  5. #5
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Dann bitte als erledigt markieren. Danke und Grüße
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  6. #6
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    das geht mit XPath viel einfacher:

    Code :
    1
    
    $result = $xml->xpath('[COLOR="Red"]//[/COLOR]object');

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 17.09.09, 01:00
  2. SimpleXML
    Von PHPGuru86 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 31.03.09, 21:56
  3. SimpleXML und xpath Problem
    Von monoblock im Forum PHP
    Antworten: 1
    Letzter Beitrag: 22.08.08, 15:22
  4. SimpleXML und DTD
    Von bandsite im Forum PHP
    Antworten: 1
    Letzter Beitrag: 03.08.06, 20:49
  5. Java XPath Problem (1.5 javax.xml.xpath.*)
    Von mad_dark_angel im Forum Java
    Antworten: 5
    Letzter Beitrag: 10.05.06, 14:39

Stichworte