Newsgroup: it.comp.www.php
Titolo: Re: Parsare documento XML con PHP

 contenitore "cd" che contiene "artist" == "Jimi Hendrix" ?
http://www.php.net/dom
http://www.php.net/xml
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 un esempio illuminante ..
sul sito della zend ci sono degli ottimi tutorial sull'argomento (che cmq 
non mancano in rete, se si ha voglia di cercarli!)

 
http://www.php.net/xml
Li sto leggendo anche se sembrano un pò complicati, a me basterebbe solo 
un esempio illuminante ..

Dato il seguente file "collection.xml"
<?xml version="1.0" encoding="ISO-8859-1"?>
<collection>
   <cd>
      <title>Fight for your mind</title>
      <artist>Ben Harper</artist>
      <year>1995</year>
   </cd>
 
   <cd>
      <title>Electric Ladyland</title>
      <artist>Jimi Hendrix</artist>
      <year>1997</year>
   </cd>
 
</collection>
come faccio con PHP a selezionare il "title", "artist" e "year" del 
contenitore "cd" che contiene "artist" == "Jimi Hendrix" ?
grazie mille

 non mancano in rete, se si ha voglia di cercarli!)
sul mio sito "altervista" ho questo messaggio:
XML Support    active 
XML Namespace Support active 
EXPAT Version 1.95.6
cradi che basti per poter fare qualcosa con PHP e XML ?
grazie

Larry wrote:

per quello che vuoi puoi anche scrivere un parser..
l'XML e' un linguaggio veramente semplice.. puoi impararlo in pochissimi
minuti..
-- 
www.iuz-lab.info

 minuti..
secondo voi puo andare bene questo codice: ?
PHP:
------------------------------------------------------------------------
$filename="file.xml"; 
    if(!($fp = fopen("$filename" , "r"))) 
        die("Non posso aprire il file"); 
    $elenco_counter = 0; 
    $elenco_data = array(); 
    $xml_current_tag_state = ''; 
 
    function startElementHandler($parser, $element_name, $element_attribs
) 
    { 
    global $elenco_counter; 
    global $elenco_data; 
    global $xml_current_tag_state; 
    $xml_current_tag_state = $element_name; 
    } 
 
    function endElementHandler($parser, $element_name) 
    { 
    global $elenco_counter; 
    global $elenco_data; 
    global $xml_current_tag_state; 
    $xml_current_tag_state = ''; 
    if( $element_name == "CD" )  
        { 
            $elenco_counter++; 
        } 
    } 
 
    function characterDataHandler($parser , $data) 
    { 
    global $elenco_counter; 
    global $elenco_data; 
    global $xml_current_tag_state; 
    if( $xml_current_tag_state == '' ) 
    return; 
    if( $xml_current_tag_state == "TITLE" )  
        { 
            $elenco_data[$elenco_counter]["title"] = $data; 
        } 
    if( $xml_current_tag_state == "ARTIST" )  
        { 
            $elenco_data[$elenco_counter]["artist"] = $data; 
        } 
    if( $xml_current_tag_state == "YEAR" )  
        { 
            $elenco_data[$elenco_counter]["year"] = $data; 
        } 
} 
if( !($xml_parser = xml_parser_create()) ) 
die("Non riesco a creare il parser XML"); 
xml_set_element_handler($xml_parser, "startElementHandler", "endElementHa
ndler"); 
 xml_set_character_data_handler($xml_pars
er, "characterDataHandler"); 
while( $data = fread($fp, 4096)) 
{ 
    if( !xml_parse($xml_parser, $data, feof($fp))) 
    { 
        break; 
    } 
} 
//libero la memoria 
xml_parser_free($xml_parser);
------------------------------------------------------------------------
poi per leggere i dati: 
PHP:
------------------------------------------------------------------------
<?php 
for($i=0 ; $i < $elenco_counter ; ++$i) 
{ 
//decommenta la riga sottostante se vuoi l'id della news 
//echo $i . "<br>\n"; 
echo "Title: " . $elenco_data[$i]["title"] . "<br>\n"; 
echo "Artist: " . $elenco_data[$i]["artist"] . "<br>\n"; 
echo "Year: " . $elenco_data[$i]["year"] . "<br>\n"; 
echo "<br>\n"; 
} 
?>

volevo chiedervi se si può fare usando XSL tramite PHP...

 volevo chiedervi se si può fare usando XSL tramite PHP...
xsl serve per manipolarlo...
potresti usare il dom con xpath.
ci metti un attimo
se usi php5: 
http://it2.php.net/dom
se usi php4:
http://it.php.net/domxml
con php5 banalmente:
$xpath = new DOMXPath(DOMDocument::load("tuofile.xml"));
$risultato = $xpath->evaluate("qui metti la tua query xpath");

 ha scritto nel messaggio 
news:dontmewithme-25E7...@twister2.tin.it...
