Php + xml funzioni per lettura file Xml

xdaniel2

Nuovo Utente
12 Gen 2012
7
0
0
Salve a tutti,
sto avendo dei problemi per quanto riguarda questo file xml, in particolare non riesco a capire come leggere in php5 utilizzando le funzioni per leggere i file xml.

Vi allego una parte dell'xml:

<?xml version="1.0" encoding="UTF-8" ?>
- <thredds:catalog xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:thredds="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:bes="http://xml.opendap.org/ns/bes/1.0#">
<thredds:service name="dap" serviceType="OPeNDAP" base="/opendap" />
<thredds:service name="file" serviceType="HTTPServer" base="/opendap" />
- <thredds:dataset name="/wrf3/dxx" ID="/opendap/wrf3/dxx/">
- <thredds:dataset name="wrf3_d01_20120104Z06.nc" ID="/opendap/wrf3/dxx/wrf3_d01_20120104Z06.nc">
<thredds:dataSize units="bytes">22193950364</thredds:dataSize>
<thredds:date type="modified">2012-01-04T14:17:13</thredds:date>
<thredds:access serviceName="dap" urlPath="/wrf3/dxx/wrf3_d01_20120104Z06.nc" />
</thredds:dataset>




Il problema e non riesco a capire come leggere le parti relative all' urlPath o il name del secondo dataset in pratica quello il cui contenuto è "wrf3_d01_20120104Z06.nc" , in particolare non capisco thredds a cosa seve, qualcuno potrebbe aiutarmi????
Ringrazio tutti anticipatamente.
 
Fino ad ora a quali metadati sei riuscito ad accedere?

Per prima cosa ti ringrazio tantissimo per la risposta, sei stato gentilissimo, per quanto riguarda quello che sono riuscito a fare quasi niente, anche perche la parola thredds mi confonde un po le idee rispetto agli esempi che ci sono su internet.

Cmq ho provato a fare cosi senza nessun risultato, anzi ho trovato molti errori:


PHP:
$file = simplexml_load_file("catalog.xml") //il nome del file che contiene l'xml
$array_nodo= $file ->catalog; //catalog è il nodo principale, dagli esempi se ho capito bene devo scendere ai nodi inferiori, quelli figli

foreach ($array_nodo as $nodo) //faccio un ciclo per leggere tutti i nodi figli
{
//adesso dal nodo catalogo voglio scendere al nodo dataset, dove ci sono le stringhe che mi interessano cioè "wrf3_d01_20120104Z06.nc" ma non so come fare sto provando a fare cosi:

echo $nodo -> dataset . "<br>";

}

L'altro mio dubbio e che di nodi dataset c'è ne sono che differenziano tra di loro per il name e l'id, quindi il mio dubbio e come leggere quello che mi interessa e come si fa quindi a differenziare il primo che non mi interessa con il secondo nodo quello che contiene i dati che voglio caricare :S!
Grazie ancora.
 
Ho usato questo codice:

PHP:
$documento = new DOMDocument();
$documento->load( 'C:\Program Files (x86)\EasyPHP-5.3.6.1\www\catalog.xml' );

$elementi = $documento->getElementsByTagName( "dataset" );
foreach( $elementi as $elemento ){
  $nomelemento = $elemento->getElementsByTagName( "access" );
  $nome = $nomelemento->item(0)-> nodeName;
  echo $nome;
 }

ma ho un problema, in pratica in questo modo riesco ad accedere al nome del nodo, ma io vorrei accedere al valore dell'attributo urlPath ma non ho capito come fare :S
 
Così dovrebbe funzionare:
PHP:
$urlPath = $elemento->getElementsByTagName('access')->item(0)->getAttribute('urlPath');


Grazie mille ho risolto posto la soluzione completa:
PHP:
$documento = new DOMDocument();
$documento->load( 'http://blackjeans.uniparthenope.it:8080/opendap/wrf3/dxx/catalog.xml' );

$elementi = $documento->getElementsByTagName( "dataset" );
$ind=0;
foreach( $elementi as $elemento ){
  $urlPath = $elemento->getElementsByTagName('access')->item(0)->getAttribute('urlPath'); 
  
  $arrayurl[$ind]=$urlPath;
  echo $arrayurl[$ind]."<br>"."<br>";
  $ind++;
 }
 

Discussioni simili