Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150

    Leggere i nodi "figli" su file xml con php

    Salve,
    premettendo che di xml non ne so nulla, avrei bisogno di sapere se c'è un modo semplice per sapere quanti sono gli elementi all'interno di un nodo figlio e come si prelevano i valori... Ho cercato un pò nel web ma non c'ho capito nulla.

    Mi spiego meglio. Ho la seguente struttura del file xml:



    codice:
    <books_list>
      
      <item>
        <id>27</id>
        <title>La natura</title>
        <description>Come rilassarsi</description>
        <thumb>http://www.pippo.com/1.jpg</thumb>
        <categories>
        <item>
           <category_id>11</category_id>
           <category_title>Psicologia</category_title>
        </item>
        <item>
           <category_id>15</category_id>
           <category_title>Tecniche</category_title>
        </item>
        </categories>
      </item>
    
    
      <item>
        <id>37</id>
        <title>Fisica</title>
        <description>La fisica moderna</description>
        <thumb>http://www.pippo.com/2.jpg</thumb>
        <categories>
        <item>
           <category_id>54</category_id>
           <category_title>Ingegneria</category_title>
        </item>
        <item>
           <category_id>45</category_id>
           <category_title>Chimica</category_title>
        </item>
         <item>
           <category_id>29</category_id>
           <category_title>Scienze</category_title>
        </item>
        </categories>
      </item>
    
    </books_list>

    Da esso si vede che ogni nodo item ha un figlio chiamato <categories> (all'interno del quale ci sono ancora degli item ). Ora per recuperare id, title, description, thumb basta che faccio:


    Codice PHP:
    <?php
    $xml 
    simplexml_load_file("file.xml");
     
     
    foreach(
    $xml->item as $blocco)  {

       echo 
    $blocco->id;
       echo 
    $blocco->title;
       echo 
    $blocco->description;
       echo 
    $blocco->thumb;
      
    }
    ?>
    ma per recuperare i valori di category_id e category_title ??

    E poi, a priori, non so neanche a quante categorie appartiene uno stesso libro. Un libro potrebbe appartenere a 2 categorie, u'altro a 3 categorie....(vedi esempio sopra)

    Devo fare un altro foreach interno al precedente??? Se si, come??

  2. #2
    Prendi spunto da qui:

    Codice PHP:
    <?php
    $xmlstr 
    '
    <books_list>
        <item>
            <id>27</id>
            <title>La natura</title>
            <description>Come rilassarsi</description>
            <thumb>[url]http://www.pippo.com/1.jpg[/url]</thumb>
            <categories>
                <item>
                    <category_id>11</category_id>
                    <category_title>Psicologia</category_title>
                </item>
                <item>
                    <category_id>15</category_id>
                    <category_title>Tecniche</category_title>
                </item>
            </categories>
        </item>
        <item>
            <id>37</id>
            <title>Fisica</title>
            <description>La fisica moderna</description>
            <thumb>[url]http://www.pippo.com/2.jpg[/url]</thumb>
            <categories>
                <item>
                    <category_id>54</category_id>
                    <category_title>Ingegneria</category_title>
                </item>
                <item>
                    <category_id>45</category_id>
                    <category_title>Chimica</category_title>
                </item>
                <item>
                    <category_id>29</category_id>
                    <category_title>Scienze</category_title>
                </item>
            </categories>
        </item>
    </books_list>
    '
    ;

    $xml simplexml_load_string($xmlstr);

    foreach(
    $xml as $item) {
        foreach(
    $item->categories as $categorie) {
            foreach(
    $categorie->item as $it) {
                echo 
    $it->category_id." - ".$it->category_title."
    "
    ;
            }
        }
    }
    ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150
    Grazie mille satifal, ho provato e funziona !!!

    Hai capito subito di cosa avevo bisogno e me l'hai risolto !!

    Grazie ancora

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.