Visualizzazione risultati 1 fino 4 di 4

Discussione: recuperare posizione nodo

  1. #1
    Guest

    Post recuperare posizione nodo

    salve a tutti io ho un file xml:

    Codice HTML:
    <principale>
    
      <figlio>
         <nome>tizio</nome>
      </figlio>
    
      <figlio>
         <nome>caio</nome>
      </figlio>
    
      <figlio>
         <nome>sempronio</nome>
      </figlio>
    
    ora vorrei recuperare la posizione di caio nel file xml, con php.

    come faccio ?

    ps. vorrei pure prelevare il valore di nome del nodo precedente e successivo.

    grazie :)

  2. #2
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Ho fatto questo codice molto velocemente:
    Codice PHP:
    $xml = simplexml_load_string('<principale>

    <figlio>
    <nome>tizio</nome>
    </figlio>

    <figlio>
    <nome>caio</nome>
    </figlio>

    <figlio>
    <nome>sempronio</nome>
    </figlio>
    </principale>'
    );

    for(
    $i = 0; $i < count($xml->figlio); $i++) {
    if(
    $xml->figlio[$i]->nome[0] == 'caio') {
    $precedente = $xml->figlio[$i - 1]->nome[0];
    $successivo = $xml->figlio[$i + 1]->nome[0];
    $corrente = $xml->figlio[$i]->nome[0];
    }
    }

    echo
    $precedente, ' - ', $corrente, ' - ', $successivo;
    Se vuoi caricare il sorgente xml da un file usa simplexml_load_file invece di simplexml_load_string

  3. #3
    Guest

    Predefinito

    grazie mille per l'aiuto.

    e se volessi scegliere soltanto quelli con <figlio id='1'>, cosa dovrei fare? grazie mille.

  4. #4
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Puoi usare XPATH, eccoti un esempio:
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);

    $xml = <<<xml
    <principale>

    <figlio id='1'>
    <nome>tizio</nome>
    </figlio>

    <figlio>
    <nome>caio</nome>
    </figlio>

    <figlio id='1'>
    <nome>sempronio</nome>
    </figlio>
    </principale>
    xml;

    $xml = simplexml_load_string($xml);
    $r = $xml->xpath('//figlio[@id="1"]');

    foreach(
    $r as $node) {
    echo
    'id=\'1\' => ', $node->nome, ' ';
    }
    ?>

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •