Problema con ASP e XML

maltese2000

Nuovo Utente
16 Mag 2013
8
0
0
Devo leggere un file xml molto complesso. Ho preparato la struttura di base del file ed ho realizzato una pagina asp per leggere i dati. Il tutto funzionava regolarmente.
Ad un certo punto non riesco piu' a leggere ne file proveniente da esterno ne i miei di prova.
ho tagliato tutto il codice e portato il file asp a leggere solo una riga ma il problema permane.
Sembra che non riesca a capire il numero di record presenti o lo legga come file vuoto

Il codice e' il seguente

<% response.buffer=false %>
<html>
<head>
<meta http-equiv="Content-Language" content="it">
<title> *** Lettura file XML ****</title>
</head>
<body>
<p align="center"><img border="0" src="..\logo.png" width="318" height="76"></p>

<%


Dim objXmlDom
Set objXmlDom = Server.CreateObject("Microsoft.XMLDOM")
objXmlDom.async = False
objXmlDom.load Server.MapPath("\XML_data\todobrasil_feed_test.xml")
'-------------------------------------------------------------------------
' Dimensionamento Array
'-------------------------------------------------------------------------
response.write (" Inizio dimensionamento Array <br>")
Dim ag
response.write (" FINE dimensionamento Array " & time() &" <br>")

Set ag = objXmlDom.getElementsByTagName("Anuncios/AgenciaNome")
response.write "n. record =" & ag.length - 1


Dim i
i = 0
For i = 0 To ag.length - 1
response.write (" record n.= "& A & "<BR>")

%>
<div align="center">
<table border="1" width="852">
<tr>
<td colspan="2">Agencia</td>
<td width="599" colspan="4"> <%=ag(I).Text%></td>
</tr>
</table>
</div>


<%

'----------------------------------------------------------------------
Next

response.write "<hr>"
Set objXmlDom = Nothing
%>

</p>
</body>
</html>

-----------------------------------------------------
Il feed

<?xml version="1.0" encoding="UTF-8"?>

<root>
<Anuncios>
<AgenciaNome>Matriz</AgenciaNome>
</Anuncios>

</root



come numero record porta

n. record =-1


qualche idea in proposito ???
grazie in anticipo
 
Ho caricato il file in locale ed ho il risultato come da immagine, è identico al tuo?

prova.jpg


Paolo
 
Aggiornamento

Lo strano e' che se prendo access e carico i dati esterni dal file completo, vengono elaborati regolarmente....
Non riesco a capire perche' non carica i dati..

Ho caricato l'intero file e programma sul server di produzione e non ottengo dati....
quello che e' ancora piu' strano che fino ad un paio di giorni fa' il tutto
funzionava regolarmente nella lettura.
 
risultato elaborazione

Il risultato che mi appare e' il seguente
 

Allegati

  • errore.png
    errore.png
    4,6 KB · Visite: 606
Ciao maltese,
ho usato un file xml mio ed il codice ha funzionato comunque.

Ti indico il codice, ho fatto alcune modifiche non indispensabili:
Codice:
<%


	Dim objXmlDom
	Set objXmlDom = Server.CreateObject("Microsoft.XMLDOM")
		objXmlDom.setProperty "ServerHTTPRequest", true 
		objXmlDom.async = False
	' carico il file
		strFile = "C:\inetpub\MN4025484S005\fitness\script\tblNPMembers.xml"
		objXmlDom.Load (strFile)
	' valorizzo le variabili
	Dim nome, email
	Set nome  = objXmlDom.getElementsByTagName("Name")
	Set email = objXmlDom.getElementsByTagName("Email")
	
	'info varie
		response.write (" Inizio dimensionamento Array <br>")
		response.write (" FINE dimensionamento Array " & time() &" <br>")
		response.write "n. record =" & nome.length 
		response.Write "<br />"&strFile&"<br /><br />"

	' ciclo
	Dim i
		i = 0
	For i = 0 To nome.length - 1
	
	%>
	<div align="center">
	<table cellpadding="1" cellspacing="1" border="1" width="80%">
	<tr>
	<td width="20%">User</td>
	<td width="40%" colspan="4"> <%=nome(I).Text%></td>
	<td width="40%" colspan="4"> <%=email(I).Text%></td>
	</tr>
	</table>
	</div>
	<%
	
	Next

	      response.write "<hr>"
	Set objXmlDom = Nothing
	
%>

file xml:
Codice:
<?xml version="1.0" encoding="utf-8"?>
<root>
<tblNPMembers>
<Name>Krusty</Name>
<Email>[email protected]</Email>
</tblNPMembers>
<tblNPMembers>
<Name>Paolo</Name>
<Email>[email protected]</Email>
</tblNPMembers>
</root>

Risultato:
HTML:
Inizio dimensionamento Array
FINE dimensionamento Array 11:25:39
n. record =2
C:\inetpub\MN4025484S005\fitness\script\tblNPMembers.xml

User 	Krusty 	[email protected]
User 	Paolo 	[email protected]
 
Ultima modifica:
Ciao maltese,
ho usato un file xml mio ed il codice ha funzionato comunque.

Ti indico il codice, ho fatto alcune modifiche non indispensabili:
Codice:
<%


	Dim objXmlDom
	Set objXmlDom = Server.CreateObject("Microsoft.XMLDOM")
		objXmlDom.setProperty "ServerHTTPRequest", true 
		objXmlDom.async = False
	' carico il file
		strFile = "C:\inetpub\MN4025484S005\fitness\script\tblNPMembers.xml"
		objXmlDom.Load (strFile)
	' valorizzo le variabili
	Dim nome, email
	Set nome  = objXmlDom.getElementsByTagName("Name")
	Set email = objXmlDom.getElementsByTagName("Email")
	
	'info varie
		response.write (" Inizio dimensionamento Array <br>")
		response.write (" FINE dimensionamento Array " & time() &" <br>")
		response.write "n. record =" & nome.length 
		response.Write "<br />"&strFile&"<br /><br />"

	' ciclo
	Dim i
		i = 0
	For i = 0 To nome.length - 1
	
	%>
	<div align="center">
	<table cellpadding="1" cellspacing="1" border="1" width="80%">
	<tr>
	<td width="20%">User</td>
	<td width="40%" colspan="4"> <%=nome(I).Text%></td>
	<td width="40%" colspan="4"> <%=email(I).Text%></td>
	</tr>
	</table>
	</div>
	<%
	
	Next

	      response.write "<hr>"
	Set objXmlDom = Nothing
	
%>

file xml:
Codice:
<?xml version="1.0" encoding="utf-8"?>
<root>
<tblNPMembers>
<Name>Krusty</Name>
<Email>[email protected]</Email>
</tblNPMembers>
<tblNPMembers>
<Name>Paolo</Name>
<Email>[email protected]</Email>
</tblNPMembers>
</root>

Risultato:
HTML:
Inizio dimensionamento Array
FINE dimensionamento Array 11:25:39
n. record =2
C:\inetpub\MN4025484S005\fitness\script\tblNPMembers.xml

User 	Krusty 	[email protected]
User 	Paolo 	[email protected]





Stasera provo.. il codice mi sembra molto simile a quello che ho usato... vediamo che viene fuori...
Grazie per ora...
 
Ciao,

stampa il file xml prendendo i dati dal db scriverli a mano è disumano.


Codice:
<%

'Stringa di connessione al Database

Strdb ="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("tuo_database.mdb") // path tuo db

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Strdb

'Istruzione SQL che prende le news dal Data Base;
'da cambiare con il nome della vostra tabella ed i nomi dei campi
SQL = "SELECT * FROM tabella Order by ID desc"

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.CursorLocation = 3
rs.Open SQL, Conn, 1,1

' Numero totale di records
totfiles = rs.recordcount

xml = "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbCRLF & _
      "<root>" & vbCRLF

' Se il Record Set non è vuoto
if totfiles <> 0 then
  Do while not rs.eof
    xml = xml & "<tblNPMembers>" & vbCRLF
    xml = xml & "<Name>" & rs("nome") & "</Name>" & vbCRLF
    xml = xml & "<Email>" & rs("email") & "</Email>" & vbCRLF
    xml = xml & "</tblNPMembers>" & vbCRLF
  
    rs.movenext
  Loop
End if

xml = xml & "</root>" 

' Impostazione che setta il tipo di file in output su XML
response.ContentType = "text/xml"
response.write xml

'Libero Risorse
rs.close
set rs=nothing
Conn.Close
set Conn=nothing
%>

Cambia il nome del database e i dati che hai impostato (file fatto in base alla descrizione).

Una volta caricato il file .xml copia i dati e mettili nel tuo .xml

Questo è per lggere il tuo .xml

Codice:
<%
Option Explicit
    Dim objXMLDoc
    Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
    objXMLDoc.async = False
    objXMLDoc.load(Server.MapPath("tblNPMembers.xml")) // metti il path dove hai il tuo .xml
    Dim nome, email
    Set nome  = objXmlDoc.getElementsByTagName("Name")
    Set email = objXmlDoc.getElementsByTagName("Email")
        Dim i
	i = 0
	For i = 0 To nome.length - 1
	%>
	<table cellpadding="1" cellspacing="1" border="1" width="80%" align="center">
	<tr>
	<td width="20%">User</td>
	<td width="30%" colspan="4"><%=nome(i).Text%></td>
	<td width="30%" colspan="4"><%=email(i).Text%></td>
        </tr>
	</table>
<%
Next
response.write "<hr>"
Set objXmlDoc = Nothing
%>


Valeria.
 
Ho optato per scriverli a mano ( file di lettura XML ) per capire perche' non andava....

Ho ripreso il tuo codice e passo passo ricontrollato il tutto finche' non sono stato sicuro del risultato...
Adesso riesco quasi a leggerlo...

Quasi perche' l' XML proviene da un file in portoghese dove sono presenti una serie di caratteri che non vengono interpretati correttamente...
es. la è viene trasfomata in #eacute o simili....

Ho provato a mettere un ISO=8559-1
ma il risultato non cambia...

Hai qualche idea in proposito ??? grazie in anticipo :)
 
Ciao,

il fatto è che non stai utilizzando un .xml standard.

Prova a mettere gli rs.nome_campo tra <![CDATA[]]> es:

Codice:
xml = xml & "<Name><![CDATA[" & rs("nome") & "]]></Name>" & vbCRLF
xml = xml & "<Email><![CDATA[" & rs("email") & "]]></Email>" & vbCRLF

adesso non hai problemi con i caratteri &egrave; &eacute; ecc...

solo che in modalità visualizzazione lo legge &egrave; nel .xml


Valeria.
 
Ciao,

il fatto è che non stai utilizzando un .xml standard.

Prova a mettere gli rs.nome_campo tra <![CDATA[]]> es:

Codice:
xml = xml & "<Name><![CDATA[" & rs("nome") & "]]></Name>" & vbCRLF
xml = xml & "<Email><![CDATA[" & rs("email") & "]]></Email>" & vbCRLF

adesso non hai problemi con i caratteri &egrave; &eacute; ecc...

solo che in modalità visualizzazione lo legge &egrave; nel .xml


Valeria.





CI provo... vediamo se risolvo. Grazie.
 

Discussioni simili