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

    Recuperare Valore Attributo di un Nodo

    Ciao a tutti! Mi sono incasinato parecchio nel parsing di un xml.
    Dovrei recuperare il valore di un attributo di un nodo xml.

    es:

    <ingradienti farina="2kg" pomodori="17" mozzarella="25g">

    A me interesserebbe recuperare ogni volta solo il valore di Mozzarella.
    Come posso fare?


    Tnx

  2. #2
    per gestire i files xml usa la classe SimpleXmlElement...

    Codice PHP:
    $x=simplexml_load_file('file');
    //stampo attributo mozzarella di tutti i sotto-tags
    foreach($x->children() as $c) echo (string)$c->attributes()->mozzarella.'
    '

    per approfondire:
    http://www.cyberfox.netsons.org/blog...p?a=view&id=13

    oppure la class reference:
    www.php.net/simplexml

  3. #3

  4. #4

    Grazie :D

    Grazie mille per la risposta, mi hai indirizzato bene _GreyFox_. Sto gia' ottenendo risultati ma mi sono imbattuto in un problema pero'.

    es:
    Codice PHP:
    <cibo>
      <
    ingradienti farina="2kg" pomodori="17" mozzarella="25g">
         <
    ristorante nome="il pomodoro">
           <
    tavolo colore="bianco">pippo</tavolo>
           <
    tavolo colore="nero">pluto</tavolo>
           <
    tavolo colore="rosso">pino</tavolo>
         </
    ristorante>
      </
    ingradienti>
    </
    cibo
    Se volessi ottenere il valore del tavolo bianco ovvero pippo?

    Con:

    Codice PHP:
     echo "Tavolo:".$xml->ingradienti->ristorante->tavolo->attributes()->colore
    Ottengo: "bianco"

    Vorrei recuperare i dati dei tre tavoli senza applicare un ciclo, e' possibile differenziarli per attributo di colore?

  5. #5
    ciao, niente di complicato usando le query xpath!

    Codice PHP:
    //per accedere a tutti i tag tavolo:
    $tagarray=$x->ingredienti->ristorante->xpath('tavolo');
    //poi ci accedi come fosse un normale array!

    //per accedere solo a quello Bianco:
    $tagarray=$x->ingredienti->ristorante->xpath("tavolo[@colore='bianco']");
    echo 
    $tagarray[0]->asXML(); 

  6. #6
    Grande! Provo al volo

    Edit: funziona perfettamente
    interessante anche la funzione asXML();

    C'e' sempre da imparare

  7. #7

    problema encoding

    Il sistema mi dice che c'e' un problema di encoding. Non mi tiene gli "a capo".

    Ad esempio nel XML e' scritto:

    Codice PHP:
    <cibo>
      <
    ingradienti farina="2kg" pomodori="17" mozzarella="25g">
         <
    ristorante nome="il pomodoro">
           <
    tavolo colore="bianco">pippo
    giovanna
    francesco
    </tavolo>
           <
    tavolo colore="nero">pluto</tavolo>
           <
    tavolo colore="rosso">pino</tavolo>
         </
    ristorante>
      </
    ingradienti>
    </
    cibo

    con:
    Codice PHP:
    $tagarray=$x->ingredienti->ristorante->xpath("tavolo[@colore='bianco']");
    echo 
    $taggarray[0]; 
    Ottengo: pippogiovannafrancesco

    Quando io vorrei:

    pippo
    giovanna
    francesco

    Com'e' possile?

  8. #8
    a guarda probabilmente non riconosce il carattere newline...
    prova a scrivere franco-mario-franceso nel tag e poi

    echo preg_replace('/-/','
    ',$tags[0]);

  9. #9
    Aime' non posso. l'xml non lo creo io. Quelli che ti ho scritto erano solo esempi di formattazione per farti capire. In realtà nell'xml mi viene riportato un valore a 64 bit tipo questo:


    <Parameter name="PaReq">eJxVUltPwjAU/iuEZ10v627k0AQkERJRFGL0iZSujEW2QVcE/PW246Z9Ot/5zvU7hdlKKzWYKrnTisNY1bXIVCtPu+3Dsgjm0Zx4PqOY4jaHS e9NbTl8K13nVcmJhz0K6AJtspYrURoOQm77o2fOIkYYBnSGUCg 9GnDcvAAHYZJgEt0nDhI/AXTioRSF4sOqNmtRpq0nkwJqXCCrXWn0kbPYFr0A2Ok1Xxmz6S C03++9grKFyGpPVgUgxwG6DTbZOau2tQ55yunj4mc5VdlsSNE7 GUj6kY0nva9R//WzC8hFQCqM4hTjCIckaBHW8aMOjQE1fhCFG4ITjO+w2/MEYeO69K6co/66wGqtVSmPPHbqXBGow6YqlY2wql5tSFUt+ct0bJs6C9BtiYeh 01oaq1oYB3HkUxL5hFAWUKd6Q7iqudWJEBw2ZR0A5FLR+aDofH Zr/fsOv54Frac=</Parameter>

    Devo leggere il valore e rimandarlo via POST. Il casotto e che me lo legge tutto di seguito e quindi poi il POST risulta errato alla verifica.

    edit: ho notato che non mi riporta anche i caratteri "+" e al suo posto mette degli spazi.

  10. #10
    il tag <![CDATA[ ]]>
    lo usi?

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.