begin process at 2008 08 29 19:49:51
1 233 870 membres
392 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Lecture xml vers dataset : prob avec sous noeuds [ Base de données / XML ] (littlekenny)

Lecture xml vers dataset : prob avec sous noeuds le 22/04/2007 10:45:40

littlekenny
Bonjour,
Avant de vous exposer le problème et mon code, voici la base de données:

<?xml version="1.0" encoding="ISO-8859-1" ?>
-<job>
     <ident>mubea</ident>
 -<bar>
           <ident>12345</ident>
           <count>1</count>  
-          <cut>
                 <ident>0031</ident>                               =>noeuds
                 <count>12</count>
                 <length>2025.8</length>
                 <v ident="Benennung" nr="1">01</v>     =>sous noeuds
                 <v ident="Ausführung" nr="2">002</v>
                 <v ident="" nr="3">709</v>             
                 <v ident="" nr="4">0</v>
                 <v ident="" nr="5">427883 002 070 FSS Flügel SS</v>
     </cut>
    </bar>
</job>


    Public BaseDonnees As DataSet
    Public VueDonnees As DataView
    Public VueLigneDonnees As DataRowView
    Public FichXML As String
    Private MaTableDeDonnees As DataTable
    Private MaVueDeDonnees As DataView


Public Sub ChargerGrille()
        'traitement
        Try
            'on renseigne le chemin du fichier XML
            FichXML = Application.StartupPath & "\options.xml"

            'on renseigne un dataset avec ce fichier XML sans shéma car inutile ici
            BaseDonnees = New DataSet
            BaseDonnees.ReadXml(FichXML)
            'on trie
            VueDonnees = Trier(BaseDonnees, "cut", "ident", True)

            'on renseigne le datagrid
            With DataGrid
                .DataSource = VueDonnees.Table
            End With

        Catch exc As Exception
            MessageBox.Show("XML file not found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
 End Sub



    Public Function Trier(ByVal DataSet As DataSet, ByVal Table As String, ByVal Propriete As String, ByVal TriAscendant As Boolean) As DataView
        Dim Tri As String

        ' Génère une vue triée d'un dataset sur une propriété d'une de ses tables
        MaTableDeDonnees = DataSet.Tables(Table)      'Mettre dans un Objet DataTable une table du DataSet
        MaVueDeDonnees = MaTableDeDonnees.DefaultView      'Créer la vue

        If TriAscendant = True Then
            Tri = Propriete & " ASC"
        Else
            Tri = Propriete & " DESC"
        End If

        MaVueDeDonnees.Sort = Tri
        Return MaVueDeDonnees
    End Function



Ma base de données est composée de lignes "cut" avec un id "ident".
Quand je n'utilise que les paramètres type :
<count>1</count>
Ca fonctionne nickel et mon datagrid est rempli (avec une ligne, dans ce cas ci).
Par contre, si je rajoute les sous noeuds type:
<v ident="nom pour info" nr="1">valeur du paramètre</v>
Le programme s'arrête dans ce cas, et il me dit qu'il n'arrive pas à lire les sous noeuds.
J'aimerais savoir comment peut-on lire ces sous noeuds, récupérer la valeur du paramètre et le nom "vident" tout en pouvant lire les autres infos comme les premiers paramètres type <count>1</count>

Je vous remercie d'avance pour votre aide ou vos suggestions.


Re : Lecture xml vers dataset : prob avec sous noeuds le 24/04/2007 17:38:57

koalafou13
salut, je pense savoir pourquoi mais je ne suis pas sur!

voila ton code:

<cut>
     <ident>0031</ident>                               =>noeuds
     <count>12</count>
     <length>2025.8</length>
     <v ident="Benennung" nr="1">01</v>     =>sous noeuds
     <v ident="Ausführung" nr="2">002</v>
     <v ident="" nr="3">709</v>             
     <v ident="" nr="4">0</v>
     <v ident="" nr="5">427883 002 070 FSS Flügel SS</v>
</cut>

cela peut s'écrire aussi comme ceci normalement:
<cut  indent="" count="" length="" .....>
        <v indent="" nr="" parametre="" />
</cut>

peut être y a t-il un conflit entre le le noeud count de
<bar> et le paramètre count de <cut>




Re : Lecture xml vers dataset : prob avec sous noeuds le 25/04/2007 20:26:11

littlekenny

En fait, non, le datagrid considère que certains noeux ont des enfants par rapport aux autres, ce qui provoque une erreur.
Pour résoudre ce problème, je lis le fichier et le recrée en virant une partie des infos des sous noeuds, pour avoir des enfants ayant la même déclaration et là, ça passe.

En passant, pour recréer le fichier xml, je crée un fichier texte et écrit tout simplement les données comme un flux texte,n'y aurait-il pas une solution plus rapide? Je pense au xmlwriter mais je n'ai pas encore tout compris... C'est la bonne voie?

 


Re : Lecture xml vers dataset : prob avec sous noeuds le 25/04/2007 20:49:18

koalafou13
moi je fais comme ceci:

 doc = New XmlDocument()
 doc.Load("c:\monFich.xml")

instructions

ajout
suppression
ect...

doc.Save("c:\monFich.xml")

et ca marche

Re : Lecture xml vers dataset : prob avec sous noeuds le 25/04/2007 20:49:18

koalafou13
moi je fais comme ceci:

 doc = New XmlDocument()
 doc.Load("c:\monFich.xml")

instructions

ajout
suppression
ect...

doc.Save("c:\monFich.xml")

et ca marche

Re : Lecture xml vers dataset : prob avec sous noeuds le 25/04/2007 20:50:36

koalafou13
ahh mais j'utilise le DOM dans ce cas ci et pas le ADO.net

Re : Lecture xml vers dataset : prob avec sous noeuds le 26/04/2007 22:35:48

littlekenny
Réponse acceptée !
Merci pour tes réponses.

J'utilise aussi un XmlDocument pour lire et transférer les données dans une structure un peu plus utilisable avec un dataset. Mais bon, parcourir un fichier xml avec xmldocument ligne par ligne et copier en même temps les changements dans un nouveau fichier texte, c'est pas top...

 


Re : Lecture xml vers dataset : prob avec sous noeuds le 29/04/2007 08:04:08

koalafou13
sinon avec ADO.net  j'utilise aussi maBd.WriteXml("base.xml") pour sauvegarder mon fichier,

tu peux aller voir ma source si tu veux : source

comme ça tu pourra voir comment j'utilise le xml !
et en même temps pourquoi pas me donner ton avis ;-)

à bientôt

Re : Lecture xml vers dataset : prob avec sous noeuds le 18/06/2007 13:02:56

littlekenny
La fonction writexml ne fonctionne pas si la structure des noeuds est différente. Je réécrit mon fichier et je sauvegarde les modifs avec writexml. Je garde tout de même ma solution, elle fonctionne bien.

 



Classé sous : dataset, xml, noeuds, ident, nr

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS