Visualizzazione dei risultati da 1 a 6 su 6

Discussione: xml della cartella

  1. #1

    xml della cartella

    E' possibile creare uno script che come output restituisce in XML il contenuto di una cartella, sia subcartelle che file?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Per leggere cartelle, subcartelle e files devi usare l'oggetto:

    http://www.soft-land.org/cgi-bin/doc...=documenti/fso
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  3. #3
    non è proprio banalissimo, se non lo trovi già fatto rischi di impappinarti un pò....fai una funzione ricorsiva che penetri nell'albero della cartella e i risultati, invece di stampare un semplice response.write, stampano un xml

    oggeto come indicato da orcim..tanta tanta pazienza (e sicuramente buona conoscenza dell'asp)...magari se ho tempo qualcosa faccio pure io perchè è intrigante sta cosa


  4. #4
    Allora, non avevo niente da fare in questa ultima mezz'ora, e allora ho buttato giu lo script seguente...l'xml lo crea correttamente, però non so quanto sia facile andarlo a leggere dopo inquanto uso lo stesso nome identita (cartella,files,elencofiles) per tutti gli elementi, anche quelli annidati...

    codice:
    <%
    
    dim fso,mioAlbero
    
    
    
    'sub di partenza
    sub stampaAlbero(percorso)
    
    apriFso()
    
    if fso.FolderExists(percorso) then
    stampaIntestazione
    apri "albero"
    createTree percorso
    chiudi "albero"
    else
    toStamp "Errore nella procedura: percorso di partenza errato",99
    end if
    
    chiudiFso()
    end sub
    
    'sub ausiliaria per inizializzare fso
    sub apriFso()
    if not isObject(fso) then set fso=server.CreateObject("scripting.filesystemobject")
    end sub
    
    'sub ausiliaria per chiudere fso
    sub chiudiFso()
    if isObject(fso) then set fso=nothing
    end sub
    
    
    'sub di avvio creazione albero
    sub createTree(percorso)
    'per ogni folder che trovo richiamo createTree
    dim folder,files,genitore,nomecartella
    
    
    if fso.folderExists(percorso) then
    
    'ricavo il nomecartella
    nomecartella=getStr(percorso,0)
    genitore=getStr(percorso,1)
    
    apri "cartella nome=""" & nomecartella & """ parent=""" & genitore & """"
    
    'attributo "nome",nomecartella 'opzionale
    'attributo "genitore",genitore 'opzionale
    
    set folder=fso.getFolder(percorso)
    'stampo prima tutti i sottoFolder
    
    for each subF in folder.subFolders
    createTree percorso & "\" & subF.name
    next
    
    'stampo tutti i File
    
    set files=folder.Files
    conta=0
    for each file in files
    conta=conta+1
    if conta=1 then apri "elencofile"
    toStamp file.name,2
    next
    if conta>0 then chiudi "elencofile"
    
    set file=nothing
    set folder=nothing
    
    chiudi "cartella"   'chiudo l'elemento cartella
    else
    
    toStamp "Errore nel percorso",99
    end if
    end sub
    
    'stampo l'intestazione dell'xml
    sub stampaIntestazione()
    mioAlbero=mioAlbero & "<?xml version=""1.0"" encoding=""UTF-8""?>"
    end sub
    
    'stampo gli elementi (file o errori)
    sub toStamp(oggetto,tipo)
    dim tagApri, tagChiudi
    select case tipo
    case 2
    tagApri="<file>"
    tagChiudi="</file>"
    case else
    tagApri="<errore>"
    tagChiudi="</errore>"
    end select
    mioAlbero=mioAlbero & tagApri & "<![CDATA[" & oggetto & "]]>" & tagChiudi
    end sub
    
    'apro un entita nome
    sub apri(nome)
    mioAlbero=mioAlbero & "<" & nome & ">"
    end sub
    
    'chiudo un entita nome
    sub chiudi(nome)
    mioAlbero=mioAlbero & "</" & nome & ">"
    end sub
    
    'stampo un entita nome con dentro un valore
    sub attributo(nome,valore)
    mioAlbero=mioAlbero & "<" & nome & "><![CDATA[" & valore & "]]>" & "</" & nome & ">"
    end sub
    
    'recupero un pezzo specifico del percorso
    function getStr(stringa,numero)
    dim temp,max
    temp=split(stringa,"\")
    max=ubound(temp)
    getStr=temp(max-numero)
    end function
    
    stampaAlbero server.mapPath("/cartella")  'riempio mioAlbero partendo da cartella
    
    ' Impostazione che setta il tipo di file in output su XML
    response.ContentType = "text/xml"
    response.Write mioAlbero  'stampo l'albero
    %>
    spero che possa essere una base di partenza...

  5. #5
    l'ho provato!
    ottimo!

    grazie mille!

  6. #6
    Originariamente inviato da santino83

    spero che possa essere una base di partenza...
    è tutto perfetto però non riesco a modificare il fatto che la cartella di partenza viene ripetuto due volte ...

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.