Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-09-2008, 15:36   #1
CheccoSR
Member
 
L'Avatar di CheccoSR
 
Iscritto dal: Nov 2005
Città: casa: Grottaglie(TA) | Lavoro: Bari
Messaggi: 164
[PHP - XML] Estrarre attribiti da un tag XML

Ciao ragazzi!

Ho un file XML di con questa struttura:

Codice PHP:
<?xml version="1.0" encoding="ISO-8859-1" ?> 
<datiposttrade>
    <abi>05104</abi> 
    <datavis>2008-08-05</datavis> 
    <FUTLO pc_id="P0" version="0100" fine="S">
    <riga_potr>
        <prg_con>1</prg_con> 
        <dtese>2008-08-05</dtese> 
        <hhese>11:35:00</hhese> 
        <isin des="Fiat Az.Ord Ragrr">IT0001976403</isin> 
        <kdiv>EUR</kdiv> 
        <qta>200</qta> 
        <prz>10.47</prz> 
        <tcor>S</tcor> 
        <sede>OTC</sede> 
        <ind>C</ind> 
    </riga_potr>
    <riga_potr>
        <prg_con>2</prg_con> 
        <dtese>2008-08-05</dtese> 
        <hhese>11:45:00</hhese> 
        <isin des="Telecom Italia Ol">IT0003497168</isin> 
        <kdiv>EUR</kdiv> 
        <prz>10</prz> 
        <tqta>C</tqta> 
        <tcor>S</tcor> 
        <sede>OTC</sede> 
    </riga_potr>
    </FUTLO>
</datiposttrade>

Sono riuscito a estrarre tutti i dati tranne quelli compresi nel tag <isin>

Come faccio ad estrarre l'attributo "des" dal tag <isin>?!


Grazie
__________________
www.2tempi.it

Ultima modifica di CheccoSR : 04-09-2008 alle 08:57.
CheccoSR è offline   Rispondi citando il messaggio o parte di esso
Old 02-09-2008, 18:19   #2
Torav
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 558
ma ti sei fatto un parser tu (spero di no ) o ne hai scaricato uno o usi le funzioni che ti fornisce php?
Torav è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2008, 08:36   #3
CheccoSR
Member
 
L'Avatar di CheccoSR
 
Iscritto dal: Nov 2005
Città: casa: Grottaglie(TA) | Lavoro: Bari
Messaggi: 164
Quote:
Originariamente inviato da Torav Guarda i messaggi
ma ti sei fatto un parser tu (spero di no ) o ne hai scaricato uno o usi le funzioni che ti fornisce php?
ho usato quelle messe a disposizione da php http://it2.php.net/manual/en/ref.xml.php
__________________
www.2tempi.it
CheccoSR è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2008, 11:09   #4
Torav
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 558
allora nella funzione che bindi quando il parser incontra un tag di apertura hai $attrs che è un array contenente come chiavi i nomi degli attributi (in questo caso des) e il valore associato è il contenuto dell'attributo (in questo caso Telecom Italia Ol)
Torav è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 08:55   #5
CheccoSR
Member
 
L'Avatar di CheccoSR
 
Iscritto dal: Nov 2005
Città: casa: Grottaglie(TA) | Lavoro: Bari
Messaggi: 164
Quote:
Originariamente inviato da Torav Guarda i messaggi
allora nella funzione che bindi quando il parser incontra un tag di apertura hai $attrs che è un array contenente come chiavi i nomi degli attributi (in questo caso des) e il valore associato è il contenuto dell'attributo (in questo caso Telecom Italia Ol)
innanzittutto grazie x l'interessamente!
ti scrivo il codice che sto usando...

Codice PHP:
// APRE E LEGGE L'XML
        
        
$filename = array();    
        
$xmlC = array();
        
$xml_data = array();


        
$filename "../xml/post_trade.xml";
            
        
$xmlC = new XmlC();
        
$xml_data file_get_contents($filename);
        
$xmlC -> Set_XML_data($xml_data);
        
        class 
XmlC {
            
            var 
$xml_data;
            var 
$obj_data;
            var 
$pointer;
            
        
            function 
XmlC() {}
            
            function 
Set_xml_data(&$xml_data) {
                
                
$this->index 0;
                
$this->pointer[] = &$this->obj_data;
                
$this->xml_data $xml_data;
                
$this->xml_parser xml_parser_create"ISO-8859-1" );
                
                
xml_parser_set_option$this->xml_parserXML_OPTION_CASE_FOLDINGfalse );
                
xml_set_object$this->xml_parser$this );
                
xml_set_element_handler$this->xml_parser"_startElement""_endElement");
                
xml_set_character_data_handler$this->xml_parser"_cData" );
                
                
xml_parse$this->xml_parser$this->xml_datatrue );
                
xml_parser_free$this->xml_parser );
            }
            
        function 
_startElement$parser$tag ) {
                
            
$object "";
                        
            eval( 
"\$this->pointer[\$this->index]->" $tag "[] = \$object;" );
                
            eval( 
"\$size = sizeof( \$this->pointer[\$this->index]->" $tag " );" );
            eval( 
"\$this->pointer[] = &\$this->pointer[\$this->index]->" $tag "[\$size-1];" );
            
            
$this->index++;
            
        }
            
            function 
_endElement($parser$tag) {
                
array_pop$this->pointer );
                
$this->index--;
            }
          
            function 
_cData$parser$data ) {
            
            
            if(
trim($data)) {
             
$this->pointer[$this->index] = trim($data);
            }
            
            }
          
            function 
_cleanString($string) {
                return 
utf8_decode(trim($string));
            }
            }
            
            
$ch_counting count($xmlC);    
            
            
            
// estrae i dati dai nodi dell'xml
            
for ($i=0$i<$ch_counting$i++) {
                
                
$GLOBALS['datiposttrade'] = array();
                
                
                
                
                
$it_counting count($xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] ->riga_potr); 
                
                for(
$j=0$j $it_counting$j++) {
                
                
$GLOBALS['datiposttrade'][$j]                 = array();
                
$GLOBALS['datiposttrade'][$j]['prg_con']    = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> prg_con[0];
                
$GLOBALS['datiposttrade'][$j]['isin']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> isin[0];
                
$GLOBALS['datiposttrade'][$j]['qta']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> qta[0];
                
$GLOBALS['datiposttrade'][$j]['tqta']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> tqta[0];
                
$GLOBALS['datiposttrade'][$j]['prz']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> prz[0];
                
$GLOBALS['datiposttrade'][$j]['kdiv']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> kdiv[0];
                
$GLOBALS['datiposttrade'][$j]['dtese']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> dtese[0];
                
$GLOBALS['datiposttrade'][$j]['hhese']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> hhese[0];
                
$GLOBALS['datiposttrade'][$j]['tcor']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> tcor[0];
                
$GLOBALS['datiposttrade'][$j]['sede']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> sede[0];
                
$GLOBALS['datiposttrade'][$j]['ind']        = $xmlC -> obj_data -> datiposttrade[0] -> FUTLO[0] -> riga_potr[$j] -> ind[0]; 
__________________
www.2tempi.it
CheccoSR è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 16:46   #6
Torav
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 558
oddio tutti quegli eval mi incasinano un po' il codice ma direi che ti basta aggiungere un $attrib tra i parametri della funzione:

Codice:
function _startElement( $parser, $tag, $attrib )
e poi lo utilizzi come vuoi..metti che vuoi salvarti tutti gli attributi che stanno nel tag "prova", io farei una cosa del genere (tu adattalo ai tuoi bisogni magari):

Codice:
if($tag == "prova" && count($attrib) > 0) {
   foreach($attrib as $key => $value) {
      $this->pointer[$this->index]->attribs[$key] = $value;
   }
}
non ho mai usato molto eval quindi potrei aver sbagliato qualcosa con gli indici ma se sono riuscito a farti capire puoi correggere da solo
Torav è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 17:45   #7
intel86
Junior Member
 
Iscritto dal: Sep 2008
Città: Bologna
Messaggi: 1
Per estrarre l'attributo des del tag isin in php devi usare questo codice:

Codice:
$dom->getElementsByTagName("isin")->item(i-esimo)->attributes->getNamedItem("des")
Se non funziona fammi sapere .. ciao ciao...
__________________
...
intel86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Alchimia? No, scienza: ecco come produrr...
Il CISPE chiede di annullare l'acquisizi...
La Now Bar supporterà il doppio d...
Vecchi Bitcoin, guadagno mostruoso: bale...
Nel 2018 Samsung snobbò NVIDIA: u...
Provare i vestiti senza mai uscire di ca...
SanDisk High Bandwidth Flash (HBF): un c...
Panasonic presenta Aquarea DHW, pompa di...
Il bracciale Meta leggerà i gesti...
iOS e Android sotto attacco: per l'antit...
A Verona dopo i monopattini ecco le e-bi...
Itch.io come Steam: al bando i giochi pe...
Digitalizzazione, identità e AI: ...
Kindle Colorsoft: arriva la versione da ...
Electra ottiene altri 433 milioni di eur...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:14.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v