Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Problema Con Xml E Asp

  1. #1
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567

    Problema Con Xml E Asp

    Ciao a tutti, quando leggo i dati all'interno di un xml con asp mi sorge un problema:

    Se ho un db fatto per esempio così:
    codice:
    <annunci>
            <annuncio>
                   <dati>testo1</dati>
            </annuncio>
    
            <annuncio>
                   <dati>testo2</dati>
                   <foto>foto.jpg</dati>
            </annuncio>
    </annunci>
    il primo record che mi si genera non trova il campo <foto> perchè inesistente e invece di ometterlo mette il valore del record successivo (non so se sto utilizzando la terminologia giusta per XML ma non lo conosco bene). In pratica se stampo a video i dati letti dall'xml invece di avere:

    codice:
    Record1:
    dati=testo1
    foto=
    
    Record2:
    dati=testo2
    foto=foto.jpg
    mi da come risultato questo:
    codice:
    Record1:
    dati=testo1
    foto=foto.jpg
    
    Record2:
    dati=testo2
    foto=
    Il codice che utilizzo per leggere i dati e stamparli a video è:
    codice:
    set dati= MyXML.getElementsByTagName("annuncio/dati")
    set foto= MyXML.getElementsByTagName("annuncio/foto")
    
    dati=dati(i).Text
    foto=foto(i).Text
    
    response.write dati
    response.write foto
    Spero di essermi spiegato bene.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    Nessuno ha qualche dritta da darmi??? Sono disperato

  3. #3

    nodi

    prova a leggere l'xml coi nodi

    codice:
    url=Server.MapPath("/nomefile.xml")
    'response.Write url
    'response.End()
    ' Creo oggetto DOM XML
    Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0")
    objXML.async = false
    objXML.setProperty "ServerHTTPRequest", True
    
    ' validazione del documento XML
    objXML.validateOnParse = false 'true
    ' non conservare spazi
    objXML.preserveWhiteSpace = false
    blnLoaded = objXML.Load(url)
        
      set objNodeList = objXML.getElementsByTagName("annuncio")  
      For Each objNode In objNodeList 
           For Each objNode2 In objNode.childNodes	
    			Select Case objNode2.nodeName
    				Case "dati"
    				Dati = objNode2.firstChild.nodevalue
    				Case "foto"
    				Foto = objNode2.firstChild.nodevalue
    			End Select
    
           Next
    
                response.write "<table>"&vbcrlf
                response.write "<tr><td>Dati : "&Dati&"</td></tr>"&vbcrlf
                response.write "<tr><td>Foto : "&Foto&"</td></tr>"&vbcrlf
                response.write "</table>"&vbcrlf
    				
    	next
    però occhio all'XML ...
    questo qui sotto è corretto ...

    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <ArrayOfannuncio xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    	<annuncio>
    		   <dati>testo1</dati>
    	</annuncio>
    	<annuncio>
    		   <dati>testo2</dati>
    		   <foto>foto.jpg</foto>
    	</annuncio>
    </ArrayOfannuncio>
    Mi sono impigliato nella Rete....
    www.deejaymax.com

  4. #4
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    Fa lo stesso scherzo, ti posto di seguito il codice preciso preciso:

    codice:
    <%
    url=Server.MapPath("test.xml")
    
    
    Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0")
    objXML.async = false
    objXML.setProperty "ServerHTTPRequest", True
    
    objXML.validateOnParse = false 
    
    objXML.preserveWhiteSpace = false
    blnLoaded = objXML.Load(url)
        
      set objNodeList = objXML.getElementsByTagName("annuncio")  
      For Each objNode In objNodeList 
           For Each objNode2 In objNode.childNodes	
    			Select Case objNode2.nodeName
    				Case "tipologia"
    				tipologia = objNode2.firstChild.nodevalue
    				Case "foto1"
    				foto1 = objNode2.firstChild.nodevalue
    			End Select
    
           Next
    
                response.write "<table>"&vbcrlf
                response.write "<tr><td>Dati : "&tipologia&"</td></tr>"&vbcrlf
                response.write "<tr><td>Foto : "&foto1&"</td></tr>"&vbcrlf
                response.write "</table>"&vbcrlf
    				
    	next
      
    %>
    XML:
    codice:
     
    <?xml version="1.0" encoding="UTF-16"?>
    <ArrayOfannuncio xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <annuncio>
        <tipologia>BOX 1</tipologia>
      </annuncio>
      
      <annuncio>
          <tipologia>BOX 2</tipologia>
          <foto1>2</foto1>
      </annuncio>
      
      <annuncio>
          <tipologia>BOX 3</tipologia>
      </annuncio>
      
      <annuncio>
          <tipologia>BOX 4</tipologia>
      </annuncio>
      
      <annuncio>
          <tipologia>BOX 5</tipologia>
          <foto1>5</foto1>
      </annuncio>
      
      <annuncio>
          <tipologia>BOX 6</tipologia>
      </annuncio>
    </ArrayOfannuncio>
    Il risultato è:
    codice:
    Dati : BOX 1
    Foto :
    Dati : BOX 2
    Foto : 2
    Dati : BOX 3
    Foto : 2
    Dati : BOX 4
    Foto : 2
    Dati : BOX 5
    Foto : 5
    Dati : BOX 6
    Foto : 5
    Che ovviamente non è giusto

  5. #5
    probabilmente ti rimane sporca la variabile dove metti il nome dalla foto ....
    Mi sono impigliato nella Rete....
    www.deejaymax.com

  6. #6
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    Ovvero???

  7. #7
    codice:
    <%
    url=Server.MapPath("test.xml")
    
    
    Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0")
    objXML.async = false
    objXML.setProperty "ServerHTTPRequest", True
    
    objXML.validateOnParse = false 
    
    objXML.preserveWhiteSpace = false
    blnLoaded = objXML.Load(url)
        
      set objNodeList = objXML.getElementsByTagName("annuncio")  
      For Each objNode In objNodeList 
           For Each objNode2 In objNode.childNodes	
    			Select Case objNode2.nodeName
    				Case "tipologia"
    				tipologia = objNode2.firstChild.nodevalue
    				Case "foto1"
    				foto1 = objNode2.firstChild.nodevalue
    			End Select
    
           Next
    
                response.write "<table>"&vbcrlf
                response.write "<tr><td>Dati : "&tipologia&"</td></tr>"&vbcrlf
                response.write "<tr><td>Foto : "&foto1&"</td></tr>"&vbcrlf
                response.write "</table>"&vbcrlf
    			
                foto1 = ""
    	
    	next
      
    %>
    Mi sono impigliato nella Rete....
    www.deejaymax.com

  8. #8
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    sembra funzionare, ma mi è sorto un nuovo problema, alcuni campi se senza valore vengono indicati solo così <id_user/> in questo caso mi da il seguente errore:

    Object required: '[object]'

    e la linea di codice che corrisponde l'errore è:
    codice:
    id_user = objNode2.firstChild.nodevalue

  9. #9
    prima e dopo il select case aggiungi :

    codice:
    if objNode2.childNodes.length <> 0 then
    
    Codice del select case
    
    end if
    Mi sono impigliato nella Rete....
    www.deejaymax.com

  10. #10
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    EVVIVA EVVIVA EVVIVA

    Funziona Funziona Funziona

    Grazie mille mi hai dato un aiuto immenso, non sapevo più dove sbattere la testa, è la prima volta che uso XML.

    GRAZIE MILLE


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.