Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Leggere elementi doppi XML

    Ho un XML con più elementi dello stesso tipo ma non riesco a stamparli tutti...

    Vanno definiti in questo modo?

    codice:
        <project slug="italia">
            <title>Italia</title>
            <coworkers>
                <coworker>Carlo Pisacane</coworker>
                <coworker>Giuseppe Mazzini</coworker>
                <coworker>Giuseppe Garibaldi</coworker>
                <coworker>Silvio Pellico</coworker>
            </coworkers>
        </project>
    Ricerco il progetto con SimpleXML e Xpatch:

    Codice PHP:
    $doc simplexml_load_file("includes/works.xml");
    $query "//*[@slug='$slug']";
    $dati $doc->xpath($query); 
    e se provo a stampare il title funziona:

    Codice PHP:
     $title $dati[0]->title
    Poi provo a fare un ciclo per stampare tutti i coworker ma viene stampato solo il primo...

    Codice PHP:
    if($dati[0]->coworkers) {
        
    $coworkers $dati[0]->coworkers;
        foreach(
    $coworkers as $coworker){
            echo 
    '[b]Coworkers[/b]
    '
    .$coworkers->coworker.'

    '
    ;  
        }

    Qualcuno sa dirmi qual'è il problema?
    Fabzine.it: Il blog italiano sulla digital fabrication

  2. #2
    Utente di HTML.it L'avatar di kakashi
    Registrato dal
    Feb 2005
    Messaggi
    357
    Il problema è che la variabile si sovrascrivere così. Cambialo facendolo diventare un array
    Codice PHP:
    if($dati[0]->coworkers) { 
        
    $coworkers[] = $dati[0]->coworkers
        foreach(
    $coworkers as $coworker){ 
            echo 
    '[b]Coworkers[/b]
    '
    .$coworkers->coworker.'

    '
    ;   
        } 


  3. #3
    Ho scritto così ma non funziona ancora. sempre solo il primo....
    Codice PHP:
    if($dati[0]->coworkers) { 
        
    $coworkers[] = $dati[0]->coworkers
        foreach(
    $coworkers as $coworker){ 
            echo 
    '[b]Coworkers[/b]
    '
    .$coworker->coworker.'

    '
    ;   
        } 

    Se faccio var_dump di $coworkers mi da:

    codice:
    array
      0 => 
        object(SimpleXMLElement)[5]
          public 'coworker' => 
            array
              0 => string 'Paolo Bitta' (length=11)
              1 => string 'Giuseppe Garibaldi'
    Fabzine.it: Il blog italiano sulla digital fabrication

  4. #4
    Il problema è che esegue il ciclo solo una volta...

    Codice PHP:
    if($dati[0]->coworkers) {
        
    $coworkers[] = $dati[0]->coworkers;
        foreach(
    $coworkers as $coworker){
            echo 
    $coworker->coworker[0];
            } 

    Se cambio manualmente il valore 0 di coworker con 1 mi visualizza il secondo nome...
    Fabzine.it: Il blog italiano sulla digital fabrication

  5. #5
    Utente di HTML.it L'avatar di kakashi
    Registrato dal
    Feb 2005
    Messaggi
    357
    a intuito,

    Codice PHP:
    foreach($dati->coworkers as $dato){
    echo 
    $dato->coworker[0];


  6. #6
    nope..

    forse non è molto elegante ma ho risolto in questo modo:

    Codice PHP:
        $coworkers[] = $dati[0]->coworkers;
        foreach(
    $coworkers as $coworker){
            for(
    $x=0;$x<=count($coworker->coworker);$x++) {
                echo 
    "\n\t\t".$coworker->coworker[$x].'
    '
    ;
            }
        } 
    Fabzine.it: Il blog italiano sulla digital fabrication

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.