Lire un fichier XML en asp pur

Signaler
Messages postés
19
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
25 août 2009
-
Messages postés
19
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
25 août 2009
-
J'ai un fichier XML à plusieurs niveaux et je n'arrive pas à lire le contenu, on me retourne constamment des erreurs d'objet manquant ou [] en trop!?

Mon XML est de la forme

<livres>
<livre>
<titre></titre>
<NbPages></NbPages>
<Description></Description>
</livre>
<livre>
...
</livre>
</livres>

<crayons>
...
</crayons>




Est-ce que qqun a une idée comment traîter ça?


Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz

8 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Bonjour à TOI.

Merci d'indiquer comment tu lis le fichier.

Les classes XML de .net fonctionne tres bien.
Messages postés
19
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
25 août 2009

Je vais t'avouer détester Microsoft avec ces clases de merde que tu dois installer pour réussir à faire la moindre app qui sort de l'ordinaire! Et tu passes par Rome et Paris pour aller à Québec! Vive le PHP! Désolé, fallait que je le dise! Alors j'ai un client présentement sur asp et il ne semble pas avoir les classes qu'il faut et quand je parle de ça au fournisseur web, il ne semble pas au courant!

Cette exemple ci a très bien fonctionné sauf que mon fichier xml est plus complexe et je ne réussis pas à récupérer les données à plus haut niveau!
http://www.stardeveloper.com/articles/display.html'article=2000072801&page=1
Avec cette exemple plus haut, il me manque toujours un élément pour aller plus haut dans hiérarchie de mon fichier XML! Et pourtant j'y arrive simplement en PHP ou ActionScript 3.0 mais toujours une erreur de syntaxe même si je suis les DOM Properties de w3schools!?!
http://www.w3schools.com/DOM/dom_methods.asp

Et l'exemple du site ici utilise des sources non disponible. Voir erreur...
http://www.aspfr.com/codes/LIRE-FICHIER-XML-ASP-NET_8808.aspx

<!--
Active Server Pages error 'ASP 0221'

Invalid @ Command directive

/v3.1/test2.asp, line 7

The specified 'import Namespace="System.Data"' option is unknown or invalid.
-->

Je suis à 2 doigts de tout basculer chez mon serveur personnel PHP!

Avez-vous des idées?



Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz
Messages postés
19
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
25 août 2009

J'ai trouvé des infos sur les classes que tu parles sur microsoft mais est-ce qu'elles doivent être installées par le provider où tu peux les mettre simplement dans le répertoire?



Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Ok,

premierement, es-tu en ASP3 ou en ASP.net

Les deux technologies sont différents.

ASP3 = PHP en moins bien car il s'agit de programmation de page interpretée par le serveur comme le PHP.
Il y a pas de compilation le nombre de bibliotheques est tres faible, et ce limite presque à la manipultation de fichier texte.
Pour le XML il faut utiliser des parseurs system

exemple http://www.codeproject.com/KB/XML/ConsumWebServicefromASP.aspx
Les pages sont en extention ASP

Si tu es en dotnet asp.net 2
La gestion du xml est faite dans le framework dotnet, et la tu as plus de possibilité.
Et en plus le code est compilé et est fortement typés et objet.

Les pages sont en vb.net ou c# et sont en exention ASPX
Pour les créer il faut les compiler avec visual studio 2003 à 2008

Les namespaces c'est des notions de asp.net
et pas d'asp.

Le saut est plus grand que le saut entre PHP4 et PHP5
car le php5 n'est pas compilé, il y a juste la notion d'objet qui est apparue.

Bon dev.
Messages postés
19
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
25 août 2009

Avec l'erreur suivante, peux-tu me dire quel genre de asp est sur le serveur??

Microsoft VBScript compilation error '800a0401'

Expected end of statement

/v3.1/test/index2.asp, line 12

testVar = xmlDoc.getElementsByTagName("livre")[1].nodeName
----------------------------------------------^




Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz
Messages postés
19
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
25 août 2009

Et la commande xml.documentElement.childNodes(1).text fonctionne!?!?!


Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz
Messages postés
19
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
25 août 2009

testVar = xmlDoc.getElementsByTagName("livre").length

me retourne bien le nombre de livre! Il me reste à être capable d'accéder aux childNodes par leur nom à présent ou si j'avais la possibilité de mettre chaque livre dans une array!?


Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz
Messages postés
19
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
25 août 2009

Bon, voici la façon la plus facile de lire les XML en asp!

<%
Option Explicit
Response.Buffer = True

Dim xmlDoc
Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load (Server.MapPath("../config/contents.xml"))


Dim title, heading, paragraph, testHTML, testVar, msg, x, y, z, Node
Dim test3
Set x = xmlDoc.getElementsByTagName("livre") ' Ici tu prends juste les tags "livre" et tu les mets dans un genre d'array
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><%= title %></title>
</head>



<%
For Each y In x ' Pour chaque tag "livre"
Response.Write(y.getAttribute("id")&"
")
Response.Write(y.childNodes(2).nodeName&"
")
Response.Write(y.childNodes(2).text&"
")
Set z = y.childNodes
For Each Node In z ' Ici pour chaque tag à l'intérieur de livre
Response.Write(Node.nodeName&"="&Node.text&"
")
Next
Next
%>


<% If xmlDoc.parseError.errorCode <> 0 Then ' Partie ici qui vérifie que ton XML est correct!
msg = " Error loading INTERPRETER data file. "
msg = msg & "
Description: " & xmlDoc.parseError.reason & ""
msg = msg & "
Source text: " & xmlDoc.parseError.srcText & ""
Response.Write msg
End If
%>



</html>



Marc,
Programmeur Web,
Zzyb Web Design & Design Graphique
www.zzyb.biz