IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problême avec du XML (j'en ai marre!)


Sujet :

VB.NET

  1. #1
    Membre du Club Avatar de Veler
    Profil pro
    Lycéen
    Inscrit en
    Mars 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2007
    Messages : 195
    Points : 47
    Points
    47
    Par défaut Problême avec du XML (j'en ai marre!)
    Bonsoir à tous,

    Après maintenant 2 mois de bloquage sur mon problême, et après avoir dientifié le vrai problême, je repose un message en vous expliquant clairement ce qu'il se passe. J'ai trouvé le problême, mais je n'ai toujours pas de solution depuis maintenant 2 semaines.

    Voila le problême, j'ai un fichier xml que j'utilise pour créer une form avec ces contrôle et tout. j'ai 2 Name, Object et Property. Object définit un contrôle, et tout les property qui sont dedans sont les propriété du contrôle.

    Je vous décrie ce que fais mon code pour que vous comprenniez le problême après:
    Quand il lit le type d'un object, il donne une valeur à une variable qui dit si c'est une form, un bouton ou autre. Quand il y a un property, il donne la valeur du property au contrôle qui est en cour, et on le sais grace à la variable dont je parle juste au dessus.

    Le problême, c'est qu'il arrive que j'ai un Object, qui se trouve dans un autre Object. Le code vois un nouveau object, donc il idéntifie le type du contrôle. Mais c'est pas ce qu'il faut, car après, il ne peu plus s'occuper des Property du contrôle précédent.

    Bon, je ne suis pas sur que je vous ai bien expliqué, mais ça vous éclaircira surment si je vous donne mon code vb.net et celui en xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Public Sub CONVERT(ByVal FileName As String)
            Dim ctrl As New Control ' variable pour la création d'un contrôle
            Dim forms As New Form 'variable pour la création de la form
            Dim type_ctrl As Integer = 0 ' 1 = Form et 2 = Contrôle
            Dim xr As XmlTextReader = New XmlTextReader(FileName)
     
            Do While xr.Read()
                Select Case xr.NodeType
                    Case XmlNodeType.Element
                        Select Case xr.Name
                            Case "Object" ' Ici, on va identifier le type d'objet, un form, un boutton...ect
                                Select Case xr.GetAttribute("type")
                                    Case "System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ' Si cest une form
                                        type_ctrl = 1 '1, c'est une form
                                        forms = New Form
                                        forms.Show()
                                    Case "System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ' Si c'est un bouton
                                        type_ctrl = 2 '2, c'est un contrôle
                                        ctrl = New Button
                                        forms.Controls.Add(ctrl)
                                End Select
                            Case "Property"
                                Select Case xr.GetAttribute("name")
                                    Case "Text" 'Pour la propriété Text du contrôle ou de la Form
                                        If type_ctrl = 1 Then 'Si c'est une form
                                            forms.Text = xr.ReadString
                                        End If
                                        If type_ctrl = 2 Then 'Si c'est un contrôle
                                            ctrl.Text = xr.ReadString
                                        End If
                                End Select
                        End Select
                    Case XmlNodeType.Element
                        Select Case xr.Name
                            Case "Object"
                                type_ctrl = 0
                        End Select
                End Select
            Loop
     
        End Sub



    Et voici celui en XML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
      <Object type="System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="Dialog" children="Controls">
        <Object type="System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="Cancel_Button" children="Controls">
          <Property name="TabIndex">1</Property>
          <Property name="Size">75, 23</Property>
          <Property name="Name">Cancel_Button</Property>
          <Property name="UseVisualStyleBackColor">True</Property>
          <Property name="Text">Annuler</Property>
          <Property name="Location">313, 250</Property>
          <Property name="DataBindings">
            <Property name="DefaultDataSourceUpdateMode">OnValidation</Property>
          </Property>
          <Property name="DialogResult">Cancel</Property>
        </Object>
        <Object type="System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="OK_Button" children="Controls">
       <Property name="TabIndex">0</Property>
          <Property name="Size">75, 23</Property>
          <Property name="Name">OK_Button</Property>
          <Property name="UseVisualStyleBackColor">True</Property>
          <Property name="Text">OK</Property>
          <Property name="Location">232, 250</Property>
          <Property name="DataBindings">
            <Property name="DefaultDataSourceUpdateMode">OnValidation</Property>
          </Property>
        </Object>
        <Property name="ShowIcon">False</Property>
        <Property name="MaximizeBox">False</Property>
        <Property name="Text">Boite de dialogue</Property>
        <Property name="ShowInTaskbar">False</Property>
        <Property name="Name">Dialog</Property>
        <Property name="StartPosition">CenterScreen</Property>
        <Property name="DataBindings">
          <Property name="DefaultDataSourceUpdateMode">OnValidation</Property>
        </Property>
        <Property name="MinimizeBox">False</Property>
        <Property name="ClientSize">400, 285</Property>
        <Property name="FormBorderStyle">FixedDialog</Property>
      </Object>
    MERCI D'AVANCE A TOUS !!!!!!!!

    A+++++
    _______________________________________________
    Etienne

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Si je comprends bien, quand tu as ceci

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <Object id="o1"...
     <Object id="o2"...
      <Property id="p1"...></property>
     </Object>
     <Property id="p2"...></Property>
    </Object>

    Alors tu ne crées pas ta propriété P2 (a affecté à l'objet o1).. c'est bien cela?
    Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)

    L'homme est plus fort que la machine... ne renoncez jamais


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Je viens de crééer une petite appli avec un bouton et 2 RichTextBox dans lequel j'ai collé le code suivant.

    A mon avais ça correspond mieux à ce que tu veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
        ''' <summary>
        ''' Constructeur : Initialise les différents contrôles
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Me.RichTextBox1.Text = "<root></root>"
     
        End Sub
     
        ''' <summary>
        ''' Lance le traitement de transformation
        ''' </summary>
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            'S'il n'y a pas de document XML renseigné
            If Me.RichTextBox1.Text = "" Then
                MsgBox("Vous devez copier un XML en entrée")
                Me.RichTextBox1.Focus()
            Else
                Dim monXml As New Xml.XmlDocument()
                monXml.LoadXml(Me.RichTextBox1.Text)
     
                Me.mCreateObject(monXml.SelectSingleNode("root/Object"))
     
            End If
        End Sub
     
        ''' <summary>
        ''' Crée un objet à partir d'un noeud objet
        ''' </summary>
        ''' <param name="monXmlNode">Noeud XML Objet</param>
        Private Sub mCreateObject(ByVal monXmlNode As Xml.XmlNode)
     
            'Gestion de tes attributs Object
            For Each attibut As Xml.XmlAttribute In monXmlNode.Attributes
                'Colle le code de gestion de tes attributs ici
            Next
     
            For Each noeud As Xml.XmlNode In monXmlNode.SelectNodes("*")
                If noeud.Name = "Property" Then
                    Me.mCreateProperty(noeud)
                Else
                    If noeud.Name = "Object" Then
                        Me.mCreateObject(noeud)
                    End If
                End If
            Next
        End Sub
     
        ''' <summary>
        ''' Créé une propriété
        ''' </summary>
        ''' <param name="monXmlNode">Noeud XML Property</param>
        Private Sub mCreateProperty(ByVal monXmlNode As Xml.XmlNode)
            'Colle ton code de création de ta propriété ici
            'Gestion de tes attributs Object
            For Each attibut As Xml.XmlAttribute In monXmlNode.Attributes
                'Colle le code de gestion de tes attributs ici
            Next
        End Sub
    Si ça t'interresse, contactes moi par mail et je t'enverrai le projet entier Zippé
    Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)

    L'homme est plus fort que la machine... ne renoncez jamais


  4. #4
    Membre du Club Avatar de Veler
    Profil pro
    Lycéen
    Inscrit en
    Mars 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2007
    Messages : 195
    Points : 47
    Points
    47
    Par défaut
    Salut,

    Oui, c'est exactement ça mon problême (pfff, je m'y prends comme un pied pour expliquer, lol).

    Sa m'interresse beaucoups ton projet si ça peu m'aider^^

    Merci
    A+
    _______________________________________________
    Etienne

  5. #5
    Membre du Club Avatar de Veler
    Profil pro
    Lycéen
    Inscrit en
    Mars 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2007
    Messages : 195
    Points : 47
    Points
    47
    Par défaut
    Salut,

    Je ne suis pas plus avancé et ça presse un petit peu... Quelque chose d'autre?
    _______________________________________________
    Etienne

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    C'est à dire?

    ça marche ou pas?
    Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)

    L'homme est plus fort que la machine... ne renoncez jamais


  7. #7
    Membre du Club Avatar de Veler
    Profil pro
    Lycéen
    Inscrit en
    Mars 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2007
    Messages : 195
    Points : 47
    Points
    47
    Par défaut
    Non, ça ne marche pas, aucune différence ... je veux pas en rajouter une couche, mais, come depuis 2 mois, lol, je suis au bout du rouleau là, je sais vraiment plus quoi faire....
    _______________________________________________
    Etienne

Discussions similaires

  1. [EasyPHP] Easy Php 2.0 : Problème avec Dom Xml
    Par devadh dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/01/2007, 16h26
  2. Problème avec validator.xml
    Par ahury dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/12/2006, 17h38
  3. Problème avec le xml microsoft
    Par stefma dans le forum Excel
    Réponses: 4
    Dernier message: 08/12/2006, 15h43
  4. [XML] [EXPAT] Problème avec Parseur XML
    Par tubeless dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/02/2006, 09h52
  5. [Tomcat] Problème avec web.xml
    Par hichamus dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/03/2005, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo