J'ai besoin d'utiliser ASP classique pour créer un fichier XML à partir d'une base de données express SQL2005. Je reçois une erreur de 500. Je crois que mon problème est la chaîne de connexion, je me demandais si je pouvais obtenir un nouvel oeil sur ce sujet pour éventuellement me fournir une nouvelle avenue. Voici le code:Script ASP classique pour créer XML
<%
Dim objConn, strConnect, strSQL, rs, tb, objFSO, xmlFile, objWrite
xmlFile = Server.MapPath("inventory.xml")
tb = chr(9)
set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=SQLOLEDB;Data Source=mybox.com;Initial Catalog=myDB;UserId=myID;Password=myPW;"
If Not objFSO.FileExists(xmlFile) Then objFSO.CreateTextFile(xmlFile)
set objWrite = objFSO.OpenTextFile(xmlFile, 2)
objWrite.WriteLine("<?xml version=""1.0"" encoding=""ISO-8859-1""?>")
objWrite.WriteLine("<data>")
strSQL = "SELECT * FROM table1"
Set rs = objConn.Execute(StrSQL)
Do While not rs.EOF
objWrite.WriteLine(tb & "<marker>")
objWrite.WriteLine(tb & tb & "<name>" & rs("name") & "</name>")
objWrite.WriteLine(tb & tb & "<address>" & replace(rs("address"),"&","&") & "</address>")
objWrite.WriteLine(tb & tb & "<city>" & rs("city") & "</city>")
objWrite.WriteLine(tb & tb & "<state>" & rs("size") & "</state>")
objWrite.WriteLine(tb & tb & "<zipcode>" & rs("zipcode") & "</zipcode>")
objWrite.WriteLine(tb & tb & "<lat>" & rs("lat") & "</lat>")
objWrite.WriteLine(tb & tb & "<lng>" & rs("lng") & "</lng>")
objWrite.WriteLine(tb & "</marker>")
rs.MoveNext
Loop
objWrite.WriteLine("</data>")
objWrite.Close()
%>
J'apprécie toute nouvelle perspective que n'importe qui peut partager. Merci, --Matt
Sans lien avec votre erreur 500, il ne s'agit que d'un commentaire, mais vous devez nettoyer les champs de données de chaque enregistrement pour garantir un format XML bien formé dans votre sortie. Cela signifie au minimum rechercher des esperluettes parasites (&), moins -thans (<) et quelques autres caractères parasites qui peuvent être dans vos données, et peut-être utiliser des sections cdata si vos données de caractères sont trop variées pour le gérer simplement. –
En outre, vous devriez être capable de trouver le message d'erreur exact. Erreur 500 est seulement l'erreur http créée pour enrouler autour de la vraie erreur que nous voulons savoir. –
Un autre nitpick non lié à votre erreur est que ce n'est pas une bonne idée de vérifier '.FileExists()'. Au lieu de cela, enveloppez votre appel à 'CreateTextFile()' dans le code qui vérifie et gère l'erreur de manière appropriée. –