Débutante paumée, help!!!

Signaler
Messages postés
30
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
1 août 2005
-
Messages postés
30
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
1 août 2005
-
Bonjours a tous,

Voila ma question est peut etre simple mais je m'y pert. Je débute en Xml (ai plus l'habitude des db SQL ouvert par ADO) et j'arrive pas a savoir comment faire, je m'explique:

Je veux mettre à jour un fichier Xml que se trouve sur un serveur distant et ce fichier doit etre mis à jour de bas en haut, cad le nouveau record doit etre toujour mis en premier et non à la fin.

Donc j'ai ma page avec le form GET="update.asp" qui cree un nouveau fichier écrasé à chaque fois sur serveur local dont j'ajoute le nouveau record et ensuite je voudrais ajouter le reste venant de l'ancien fichier du serveur distant. Ensuite je retransfer le nouveau se trouvant sur le serveur local sur le serveur distant.

Je sais, peut etre je me complique, j'ai chercher sur tous les post mais n'ai pas trouver mieux, et du coup je m'y pert.
voici donc mon code:

<% @ Import Namespaces="Sytem.Data"%>
<% @ Import Namespaces="System.Data.OleDb"%>
<script language="vb" runat="server">
Sub Page_Load(Sender as Object, E as EventArgs)
Dim ObjDataSet as new DataSet()
Dim ObjDataSet2 as new DataSet()

ObjDataSet2.ReadXml(server.MapPath("txtintro.xml"))

ObjDataSet.setProperty "ServerHTTPRequest", true
ObjDataSet.async = false
ObjDataSet.ReadXml("http://users.skynet.be/fa539444/txtintro.xml"))

Dim ObjTable as DataTable
Dim ObjNewRow as DataRow

ObjTable = ObjDataSet2.Table("txtintro.xml")
ObjNewRow = ObjTable.NewRow()
ObjNewRow.Item("titre") = <%Request.Form("titre")%>
ObjNewRow.Item("date") = <%Request.Form("date")%>
ObjNewRow.Item("texte") = <%Request.Form("texte")%>
ObjTable.Rows.Add(ObjNewRow)

ObjTable = ObjDataSet2.Table("txtintro.xml")
ObjNewRow = ObjTable.NewRow()
ObjNewRow.Item("titre") = <%Request.Form("titre")%>
ObjNewRow.Item("date") = <%Request.Form("date")%>
ObjNewRow.Item("texte") = <%Request.Form("texte")%>
ObjTable.Rows.Add(ObjNewRow)

<!-- Ici je bloque voit pas comment transferer tout du fichier 1 au 2eme -->

ObjDataSet2.WriteXml(Server.MapPath("txtintro.xml"))

End Sub
</script>

Après j'ai trouver un script que j'ai adapter pour transferer sur le serveur le nouveau fichier:

Sub Transfert_ftp()
Client.Hostname = "users.skynet.be"
Client.Username = "xxxxx"
Client.Password = "xxxxxx"

Client.Connect()

If Not Client.IsConnected Then
MsgBox("Error")
Else
If Client.UploadFile("d:\web\txtintro.xml", "txtintro.xml") Then
MsgBox("OK")
Else
MsgBox("Error")
End If
End If
End sub
</script>

Voila, si qqun pouvait m'aider je le remercie d'avance.

Thanae19

8 réponses

Messages postés
139
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
12 juillet 2011

Bonjour,

Vous pouvez essayer avec ce bout de code ;-) :

        Dim xmlDocument As XmlDocument = New XmlDocument()
        xmlDocument.Load(Server.MapPath("txtintro.xml"))

        ' Crée un nouvel élement <noeud1> et l'ajoute à la racine
        Dim noeudParent As XmlElement = xmlDocument.CreateElement("intro")

        ' Définit le nom et la valeur de l'attribut
        noeudParent.SetAttribute("ID", txtID.Text)

        xmlDocument.DocumentElement.PrependChild(noeudParent)

        ' Crée les noeuds requis
        Dim noeudTitre As XmlElement = xmlDocument.CreateElement("titre")
        Dim noeudAuteur As XmlElement = xmlDocument.CreateElement("Auteur")

        Dim titreContenuText As XmlText = xmlDocument.CreateTextNode(txtTitre.Text)
        Dim auteurContenuText As XmlText = xmlDocument.CreateTextNode(txtAuteur.Text)

        ' Affecte les noeuds au noeudParent sans la valeur
        noeudParent.AppendChild(noeudTitre)
        noeudParent.AppendChild(noeudAuteur)

        ' La valeur des noeuds
        noeudTitre.AppendChild(titreContenuText)
        noeudAuteur.AppendChild(auteurContenuText)

        ' On sauvegarde dans le fichier XML
        Dim listeNoeuds As XmlNodeList = xmlDocument.SelectNodes("/introductions/intro[@ID=" & txtID.Text & "]")

        xmlDocument.Save(Server.MapPath("txtintro.xml"))
        lblEtat.Text = "Données enregistrées"


Donc dans la WebForm, nous avons :
- 1 TextBox appelé txtID
- 1 TextBox appelé txtTitre
- 1 TextBox appelé txtAuteur
- 1 Label appelé lblEtat
- 1 Button appelé btnValide qui permet d'exécuter ce code.

Supposons que nous avons déjà un enregistrement dans la base, et nous le remplissons avec ces valeurs respectives :
- 2
- Test n°2
- Mathieu

On obtient alors le fichier xml suivant :

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

  
    <titre>Test n°2</titre>
    Mathieu
  
  <noeud1 ID="1">
    <titre>Test</titre>
    <noeudAuteur>Mathieu</noeudAuteur>
  </noeud1>



Voilà, donc il vous reste à utiliser ce code et à le personnaliser ;-)

Bonne continuation !
@ bientôt, Mathieu aka Netlink
Messages postés
139
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
12 juillet 2011

Oups petite correction...

Dans le code XML, l'enregistrement n°1 est comme ceci :


  <titre>Test</titre>
  Mathieu



Je l'ai modifié pendant la rédaction de ma réponse, et je n'ai pas pensé à rectifier...

@ bientôt, Mathieu aka Netlink
Messages postés
30
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
1 août 2005

Merci pour le code, c'est mieux que ce que j'avais fait, mais j'ai un souci, il me fait une erreur de :

Expected end of statement
updatexml.asp, line 10, column 16
Dim xmlDocument As XmlDocument = New XmlDocument()

Et je ne vois pas le prob, j'ai esayer avec

Dim xmlDocument As New XmlDocument()

toujours parreil

alors je vois pas...

Thanae19
Messages postés
139
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
12 juillet 2011

Avez-vous importé System.XML ?

Si non, il faut rajouter

Imports System.Xml


En haut de votre classe VB si vous êtes en code behind (code VB séparé de la page ASPX.

Si votre code VB est intégré dans votre page ASPX il faut rajouter

<%@ Import Namespace="System.Xml" %>


@ bientôt, Mathieu aka Netlink
Messages postés
30
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
1 août 2005

Non, mais avec il m'indique:

Error Type:
Active Server Pages, ASP 0221 (0x80004005)
The specified 'Import Namespace="System.xml" ' option is unknown or invalid.

j'ai essayer avec d'autre comme "System.Data" mais pareil, je commence a vraiment décroché là :-(!

Thanae19
Messages postés
139
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
12 juillet 2011

Pourquoi appelez-vous vos pages 'page.asp' par exemple ? Car le code que je vous ai donné, et le code que vous avez indiqué dans votre premier post sont en VB.NET. Or ce n'est utilisable que si le .NET Framework est installé sur le serveur, et donc l'extension de la page doit être .aspx (extension des pages ASP.NET)

Si votre extension est .asp, les pages ne seront pas interprétées par le .NET Framework. Donc il est nécessaire de mettre l'extension .aspx ---> Votre page doit s'appeler : updatexml.aspx ;-)

En principe là ça devrait fonctionner !

@ bientôt, Mathieu
Messages postés
139
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
12 juillet 2011

Ou sinon peut-être faut-il tout simplement rajouter un "s" à la fin de "Namespace" ?

@ bientôt, Mathieu
Messages postés
30
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
1 août 2005

Ca y est ca fonctionne, j'avais installer .Net Frameworks mais je ne savais pas que le "x" etait important.

Merci beaucoup pour ton aide.

Thanae19