• User Attivo

    Xml e asp

    Salve a tutti

    ho la necessità di fare una paginazione per un file xml
    questo è il codice che uso per visualizzare tutto l'xml che vorrei visualizzare in + pagine

    Dovrei giocare con il ciclo
    For Each objNodi In Nodo, ma ho bisogno di una spinta 🙂
    sapete darmi una mano ?

    Sub parser_XML(percorso_XML)
    'Inizializziamo il Parser MS XML...
    Set objXML = Server.CreateObject("Microsoft.XMLDOM")
    objXML.async = false
    objXML.setProperty "ServerHTTPRequest", True
    objXML.validateOnParse =false
    objXML.preserveWhiteSpace = false

    'Carica il file XML
    strFile = percorso_XML
    caricoFile = objXML.Load(percorso_XML)

    If Not caricoFile Then
    	response.write "Errore di caricamento"
    else
    
    	'response.write "caricato"
    	Set Nodo = objXML.getElementsByTagName("product")
    		For Each objNodi In Nodo
    				For Each objNodo In objNodi.childNodes
    					Select Case objNodo.nodeName
    						Case "name"
    						nome = objNodo.firstChild.nodevalue
    						Case "description"
    						descrizione = objNodo.firstChild.nodevalue
    						Case "imageUrl"
    						imageUrl = objNodo.firstChild.nodevalue
    						Case "price"
    						prezzo = objNodo.firstChild.nodevalue
    						Case "productUrl"
    						productUrl = objNodo.firstChild.nodevalue
    					End Select
    				Next
    				response.write "<table>"&vbcrlf
    				response.write "<tr><td><h2>"&nome&"</h2></td></tr>"&vbcrlf
    				response.write "<tr><td>"&descrizione&"</td></tr>"&vbcrlf
    				response.write "<tr><td><img src="""&imageUrl&"""></td></tr>"&vbcrlf
    				response.write "<tr><td>? "&prezzo&"</td></tr>"&vbcrlf
    				response.write "<tr><td><a href="""&productUrl&""">Acquista</a></td></tr>"&vbcrlf
    				response.write "</table>"&vbcrlf
    		Next
    end if
    

    end sub


  • User Attivo

    Ciao scura 🙂

    ho modificato qualche riga del tuo codice. In questo modo potrai passare via querystring la variabile n, tale n costituirà lo start, cioè il prodotto che sarà visualizzato per primo (come vedi nel codice saranno visualizzati 10 prodotti per pagina a partire da n). Lascio a te il completamento del codice con i pulsanti di navigazione (avanti, indietro etc...) a tuo piacimento.

    In grassetto le modifiche che ho apportato:

    
    <%
    Set objXML = Server.CreateObject("Microsoft.XMLDOM")
    objXML.async = false
    objXML.setProperty "ServerHTTPRequest", True
    objXML.validateOnParse = false
    objXML.preserveWhiteSpace = false
    
    'Carica il file XML
    strFile = percorso_XML
    caricoFile = objXML.Load(Server.MapPath("articoli.xml"))
    
    If Not caricoFile Then
        response.write "Errore di caricamento"
    Else
        
    **     n = Request("n")
        If n = "" or not IsNumeric(n) then n = 0**
        
        'response.write "caricato"
        Set Nodo = objXML.getElementsByTagName("articolo")
        **For i = n to n+10**
            **If i <= Nodo.length-1 then**
                For Each objNodo In Nodo**(i)**.childNodes
                    Select Case objNodo.nodeName
                        Case "name"
                        nome = objNodo.firstChild.nodevalue
                        Case "description"
                        descrizione = objNodo.firstChild.nodevalue
                        Case "imageUrl"
                        imageUrl = objNodo.firstChild.nodevalue
                        Case "price"
                        prezzo = objNodo.firstChild.nodevalue
                        Case "productUrl"
                        productUrl = objNodo.firstChild.nodevalue
                    End Select
                Next
                response.write "<table>"&vbcrlf
                response.write "<tr><td><h2>"&nome&"</h2></td></tr>"&vbcrlf
                response.write "<tr><td>"&descrizione&"</td></tr>"&vbcrlf
                response.write "<tr><td><img src="""&imageUrl&"""></td></tr>"&vbcrlf
                response.write "<tr><td>&#8364; "&prezzo&"</td></tr>"&vbcrlf
                response.write "<tr><td><a href="""&productUrl&""">Acquista</a></td></tr>"&vbcrlf
                response.write "</table>"&vbcrlf
    **        Else
                Exit For**
            **End if**
        Next
    End if
    %>
    
    

    PS: ricorda che Nodo è in base 0 quindi con n = 1 vusualizzerai la lista a partire dal secondo prodotto.

    Ciao.


  • User Attivo

    Madai grazie 1000

    ora mi metto all'opera

    solo una domanda: dato che l'xml è molto pesante ... credi ci sarebbero forti rallentamenti nel caso in cui la pagina che legge questo megaXML 🙂 fosse consultata da molti utenti contemporaneamente ?

    ps. Questo forum è il migliore !!!! 🙂 ho ancora la brutta abitudine di consultare un'altro forum .... dopo molte ricerche lì ho trovato solo gente che aveva il mio stesso problema ma nessuna risposta, poi ho deciso di chiedere aiuto qui e in pochi minuti è arrivata la spintarella.


  • User Attivo

    In effetti è tutto molto leto anche se ci sono solo io a fare le prove 🙂

    leggendo in rete ho scoperto l'esistenza di xquery

    sapete dirmi qualcosa? anche se credo sia OT con l'argomento specifico di questa sezione del forum.

    in alternativa credo posso solo copiare l'xml in un db e fine del cinema....

    un consiglio ?


  • User Attivo

    @scura said:

    In effetti è tutto molto leto anche se ci sono solo io a fare le prove 🙂

    leggendo in rete ho scoperto l'esistenza di xquery

    sapete dirmi qualcosa? anche se credo sia OT con l'argomento specifico di questa sezione del forum.

    in alternativa credo posso solo copiare l'xml in un db e fine del cinema....

    un consiglio ?

    Quanto pesa questo file xml?


  • User Attivo

    Il file pesa circa 50 mb 🙂
    infatti ho copiato tutto in un db e fine del cinema, però se hai qualche idea sono curiosa

    ps.
    Io non ricevo + i messaggi quando qualcuno aggiunge un post ad una discussione alla quale partecipo....


  • Moderatore

    @scura said:

    ps.
    Io non ricevo + i messaggi quando qualcuno aggiunge un post ad una discussione alla quale partecipo....

    Le notifiche dei messaggi vanno configurate nel tuo Pannello di Controllo.

    :ciauz:


  • User Attivo

    @scura said:

    Il file pesa circa 50 mb 🙂
    infatti ho copiato tutto in un db e fine del cinema, però se hai qualche idea sono curiosa

    ps.
    Io non ricevo + i messaggi quando qualcuno aggiunge un post ad una discussione alla quale partecipo....

    Personalmente per 50mb di dati userei un database senza dubbio, credo sia la soluzione più performante.

    Puoi comunque provare ad usare ASP.NET... magari ci fai sapere 🙂

    Ecco un tutorial (in inglese): http://www.codeproject.com/aspnet/XSLTransform.asp

    Ciao 🙂


  • User Attivo

    Grazie 1000 Madai per i suggerimenti , anche se asp.net mi fa venire il mal di pancia 🙂

    Visto anche nella pagina del profilo personale come ricevere le notifiche delle disc.

    ciaoooooo


  • User Attivo

    @scura said:

    Grazie 1000 Madai per i suggerimenti , anche se asp.net mi fa venire il mal di pancia 🙂

    Visto anche nella pagina del profilo personale come ricevere le notifiche delle disc.

    ciaoooooo

    Prego 🙂

    A presto :ciauz: