Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Php + xml funzioni per lettura file Xml

    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:

    codice:
    codice:
      <?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

  2. #2
    ciao,

    threadds è un namespace impostato sulla prima riga:

    <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#">
    serve per identificare alcuni pezzi di codice secondo uno schema... cosi puoi avere più spezzoni di codice mescolati insieme...

    esempio:
    fai conto di aver definito 2 namespace 1 page e 1 content
    Codice PHP:
    <page:titolo>titolo della pagina</titolo>
    <
    page:body>
      <
    content:titolo>Titolo del contenuto</titolo>
    </
    page
    come vedi il tag "titolo" è presente sullo stesso documento ma con due namespace diversi, in questo modo il "titolo della pagina" può essere gestito in un modo mentre il "titolo del contenuto" può essere gestito in un altro modo..

    ma il tag sempre <titolo> è
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Originariamente inviato da Al_katraz984
    ciao,

    threadds è un namespace impostato sulla prima riga:



    serve per identificare alcuni pezzi di codice secondo uno schema... cosi puoi avere più spezzoni di codice mescolati insieme...

    esempio:
    fai conto di aver definito 2 namespace 1 page e 1 content
    Codice PHP:
    <page:titolo>titolo della pagina</titolo>
    <
    page:body>
      <
    content:titolo>Titolo del contenuto</titolo>
    </
    page
    come vedi il tag "titolo" è presente sullo stesso documento ma con due namespace diversi, in questo modo il "titolo della pagina" può essere gestito in un modo mentre il "titolo del contenuto" può essere gestito in un altro modo..

    ma il tag sempre <titolo> è
    e quindi nonho capito come leggere il valore wrf3_d01_20120104Z06.nc contenuto nel nodo dataset :S!
    Cmq grazie mille per la risposta sei stato gentilissimo!

  4. #4
    che funzioni stai usando di php?

    cosa hai provato a fare tu?
    Questa volta, più che un voto.. è favoreggiamento.

  5. #5
    Originariamente inviato da Al_katraz984
    che funzioni stai usando di php?

    cosa hai provato a fare tu?
    sto usando php in particolare le funzioni simplexml

    io sto provando seguendo degli esempi su internet ma non mi stampa nulla:

    $file = simplexml_load_file("catalog.xml")
    $array_nodo= $file ->catalog;

    foreach ($array_nodo as $nodo)
    {
    //adesso dal nodo catalogo voglio scendere al nodo dataset dove voglio leggere il nome di quella stringa ma non so come fare sto provando a fare cosi:

    echo $nodo -> dataset . "
    ";

    }

    Però non mi stampa niente di niente :S!

  6. #6
    devi per forza usare simplexml? io di solito uso il DOMDocument
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    Con DOM come faccio a distinguere i livelli, cioè io devo arrivare al nodo dataset ma che è figlio di un altro dataset :S!

    Cioè l'ordine dei nodi dovrebbe essere questo se non sbaglio: catalog - dataset - dataset(quello che mi interessa).

    La root dovrebbe essere catalog e i figli dataset.

    Il mio dubbio è come passare dalla root al secondo nodo dataset??


    Ti ringrazio ancora per l'aiuto!

  8. #8
    Ho usato il DOM e in particolare questo blocco di codice:

    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;

    //$nome-> attributes  //mi da errore volevo prendere i valori degli attriburi.

      
    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, cioè se utilizzo $nome-> attributes mi da errore e quindi non riesco accedere al valore dell'url :s....
    qualcuno gentilmente saprebbe aiutarmi???
    Grazie mille a tutti!!

  9. #9
    Prova con:
    Codice PHP:
    foreach( $elementi as $elemento ){
      
    $attributo $elemento->getAttribute'name' );

    //$nome-> attributes  //mi da errore volevo prendere i valori degli attriburi.

      
    echo $attributo;
     } 
    o:
    Codice PHP:
    $i 0;
    foreach( 
    $elementi as $elemento ){
      
    $attributo $elemento->item($i)->getAttribute'name' );

    //$nome-> attributes  //mi da errore volevo prendere i valori degli attriburi.
    $i++;
      echo 
    $attributo;
     } 
    Questa volta, più che un voto.. è favoreggiamento.

  10. #10
    Grazie mille ho risolto posto la soluzione completa:
    Codice PHP:
    Codice 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]."
    "
    ."
    "
    ;
      
    $ind++;
     } 

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.