Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [XML]SimpleXMl altri elementi da selezionare

    ho questo xml
    codice:
     <CLASSIFICA>
      <INFO ID="1">OK</INFO> 
      <SQUADRA Posizione="1" Punti="15" Vinte="5" Perse="0">aaa</SQUADRA> 
      <SQUADRA Posizione="2" Punti="15" Vinte="5" Perse="1">bbbb</SQUADRA> 
      <SQUADRA Posizione="3" Punti="15" Vinte="5" Perse="1">cccc</SQUADRA> 
      <SQUADRA Posizione="4" Punti="14" Vinte="4" Perse="2">dddd</SQUADRA> 
      <SQUADRA Posizione="5" Punti="9" Vinte="3" Perse="2">eee</SQUADRA> 
      <SQUADRA Posizione="6" Punti="9" Vinte="3" Perse="3">fff</SQUADRA> 
      <SQUADRA Posizione="7" Punti="8" Vinte="3" Perse="2">ggg</SQUADRA> 
      <SQUADRA Posizione="8" Punti="7" Vinte="2" Perse="3">hhh</SQUADRA> 
      <SQUADRA Posizione="9" Punti="6" Vinte="2" Perse="3">iii</SQUADRA> 
      <SQUADRA Posizione="10" Punti="6" Vinte="2" Perse="4">llll</SQUADRA> 
      <SQUADRA Posizione="11" Punti="6" Vinte="2" Perse="4">mmmm</SQUADRA> 
      <SQUADRA Posizione="12" Punti="6" Vinte="2" Perse="4">nnnn</SQUADRA> 
      <SQUADRA Posizione="13" Punti="4" Vinte="2" Perse="3">oooo</SQUADRA> 
      <SQUADRA Posizione="14" Punti="4" Vinte="1" Perse="5">pppp</SQUADRA> 
      </CLASSIFICA>
    con SimpleXMl e con questo codice

    codice:
     $xml = simplexml_load_file($ricerca);
    
    foreach ($xml->SQUADRA as $movie) {
       echo $k."=>".$movie, '
    ';
    }

    riesco a stampare i nomi delle squadre..ma come recupero intanto i dati "Posizione" Punti Vinte Perse ?"

    non posso modificare l'xml in quanto generato da un altro sito.

  2. #2

  3. #3
    guarda sarò sincero..sto guardando gli esempi dalle 14.30...ma non trovo niente che fa al caso mio.

    se avete delle idee vi prego di postarle.


    anche perchè negli esempi viene usata la funzione

    $xml = new SimpleXMLElement($xmlstr);

    io invece richiamo l'xml da una pagina esterna con
    $xml = simplexml_load_file($ricerca);

    non so se questo possa voler dire qualcosa.

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    l'esempio che interessa a te è questo:

    codice:
    <?php
    include 'example.php';
    
    $xml = new SimpleXMLElement($xmlstr);
    
    /* Access the <rating> nodes of the first movie.
     * Output the rating scale, too. */
    foreach ($xml->movie[0]->rating as $rating) {
        switch((string) $rating['type']) { // Get attributes as element indices
        case 'thumbs':
            echo $rating, ' thumbs up';
            break;
        case 'stars':
            echo $rating, ' stars';
            break;
        }
    }
    ?>
    Se guardi l'xml di esempio contiene questi nodi:

    codice:
    <rating type="thumbs">7</rating>
      <rating type="stars">5</rating>
    Il fatto che tu lo carichi da file non cambia nulla, perchè quello che ottieni è sempre un oggetto simplexml.

    ciao

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    La mia e' un'opinione personale derivate dai lavori eseguiti con php e xml.
    Ma io ho sempre usato le funzioni DOM XML, per gestire XML.

    Le funzionii DOM (Docuement Object Model) sono uno standard diffuso per gestire xml.
    Tanto per capirci le varie funzioni le ritroviamo in Java, Javascript asp e altri linguaggi.

    Sinceramente le trovo piu' comode.

    La documentazionie relativa si trova qui .

    Queste funzionii si appoggiano sul DOM document ( documentazione sta
    qui ).

    Per cui per leggere il documento richiesto si farebbe

    Codice PHP:

    $doc 
    = new DOMDocument();
    $doc->load('dati.xml');

    // a questo punto abbiamo parsato e caricato in memoria l'xml
    // sottoforma di albero che possiamo navigare con el funzioni DOM XML

    // e famo cosi'

    $elements $doc->get_elements_by_tagname("SQUADRA");

    // ottenendo un arrai contente ttutti i nodi che che hanno come tag name "squadra".

    // quindi possiamo semplicemente scorrere l'array dei riferimenti ai nodi e recuperare tutti i dati che ci servono

    foreach($elements as $el) {
        echo 
    "name= ".( $el->get_attribute("Posizione") );



    Et voila' mi pare un po' piu' easy.
    Ovviamente il server deve avere le lib Dom abilitate.

  6. #6
    l'hoster mi dice

    "php-domxml non esiste più, era presente sul php4";

    che faccio?

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    i miei messaggi li leggi?

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    mi pare strano dato che io le ho usate in xampp con php5.
    E' vero che le dom xml erano di php4.
    Comunque puoi udare le lib dom per leggere l'xml ossia puoi usare tranquillamente il codice che ti ti ho scritto sopra il metodo usato e' della classe dom quindi se il server ha la lib abilitata usala senza problemi e comunque fai riferiemento alla documentazione che ti da la lista dei metodi.
    E fidati sono molti e ti permettono di navigare il documento xml veramente in poche righe di codice visto che supportano pure xpath se nn mi sbaglio.

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Dom è un estensione come le altre, la configurazione di default può averle abilitate, ma poi non è detto che ci sia su tutti i server.

    Comunque non per insistere, ma anche simplexml supporta xpath (http://fr.php.net/manual/en/function...ment-xpath.php), se hai quelle inutile cercare soluzioni macchinose.


  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Soluzioni macchinose?????

    In dom xml
    Codice PHP:

    $doc 
    = new DOMDocument();
    $doc->load('dati.xml');
    $elements $doc->get_elements_by_tagname("SQUADRA");

    foreach(
    $elements as $el) {
        echo 
    "name= ".( $el->get_attribute("Posizione") ); 
    Come avevi proposto te in simple xml
    Codice PHP:
    include 'example.php';

    $xml = new SimpleXMLElement($xmlstr);

    /* Access the <rating> nodes of the first movie.
     * Output the rating scale, too. */
    foreach ($xml->movie[0]->rating as $rating) {
        switch((string) 
    $rating['type']) { // Get attributes as element indices
        
    case 'thumbs':
            echo 
    $rating' thumbs up';
            break;
        case 
    'stars':
            echo 
    $rating' stars';
            break;
        }

    Mi pare che il codice parli da solo.

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.