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

C# Discussion :

comment selectionner un noeud 'un fichier XML dans une liste ?


Sujet :

C#

  1. #1
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut comment selectionner un noeud 'un fichier XML dans une liste ?
    bonjour...
    j'ai un fichier XML suivant :
    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
    <XMLFILE xmlns="http://tempuri.org/XMLFILE.xsd">
      <MY_DATA>
        <DATA_CODE>554</DATA_CODE>
        <DATA_LIBELLE>Data 1</DATA_LIBELLE>
        <DATA_TEXTE>&lt;P&gt;Un certain nombre de tests unitaires simples pour 
     
    repérer les régressions&lt;/P&gt;</DATA_TEXTE>
        <DATA_DM>2005-07-12T11:26:12+02:00</DATA_DM>
      </MY_DATA>
     <MY_DATA>
        <DATA_CODE>555</DATA_CODE>
        <DATA_LIBELLE>Data 2</DATA_LIBELLE>
        <DATA_TEXTE>&lt;p&gt;Syntaxe volontairement incorrecte (test manque 
     
    parenthèses)&lt;/p&gt;
     
    &lt;ul&gt;
    &lt;li&gt;liste&lt;/li&gt;
    &lt;li&gt;liste 2&lt;/li&gt;&lt;/ul&gt;
    &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
    &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
    &lt;p&gt;décalé&lt;/p&gt;
    &lt;/blockquote&gt;
    &lt;ol&gt;
    &lt;li dir="ltr"&gt;numéroté&lt;/li&gt;
    &lt;li dir="ltr"&gt;deux&lt;/li&gt;
    &lt;li 
     
    dir="ltr"&gt;trois&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;</DATA_TEXTE>
        <DATA_DM>2005-07-12T11:26:12+02:00</DATA_DM>
      </MY_DATA>
    <MY_DATA>
        <DATA_CODE>556</DATA_CODE>
        <DATA_LIBELLE>Data 3</DATA_LIBELLE>
        <DATA_TEXTE>Substitution d'expression</DATA_TEXTE>
        <DATA_DM>2005-07-12T11:26:12+02:00</DATA_DM>
      </MY_DATA>
    <MY_DATA>
        <DATA_CODE>557</DATA_CODE>
        <DATA_LIBELLE>Data 4</DATA_LIBELLE>
        <DATA_TEXTE>&lt;P&gt;Un certain nombre de tests unitaires simples pour 
     
    repérer les régressions&lt;/P&gt;</DATA_TEXTE>
        <DATA_DM>2005-07-12T11:26:12+02:00</DATA_DM>
      </MY_DATA>
    <MY_DATA>
        <DATA_CODE>558</DATA_CODE>
        <DATA_LIBELLE>Data 5</DATA_LIBELLE>
        <DATA_TEXTE>&lt;P&gt;Un certain nombre de tests unitaires simples pour 
     
    repérer les régressions&lt;/P&gt;</DATA_TEXTE>
        <DATA_DM>2005-07-12T11:26:12+02:00</DATA_DM>
      </MY_DATA> 
    </XMLFILE>
    je cherche un programme en C# qui me permet d'extraire le noeud : <DATA_TEXTE>

    pour remplacer ce noeud avec un autre noeud !
    Merci bien

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Je t'invite à lire les tuto XmlDocument et XmlNode.

    En gros, (sans avoir testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    XmlDocument doc = new XmlDocument();
    doc.Load(FileName);
     
    // Selection de tous les noeuds DATA_TEXTE
    XmlNodeList nodelist =  doc.SelectNodes("//DATA_TEXTE");
     
    foreach (XmlNode node in nodelist)
    {
        // traitement sur le noeud
    }
    Il existe aussi des classes qui permettent de naviguer/remplacer des noeuds.
    Tu aussi aussi améliorer la requête Xpath pour extraire plus de données et faire le remplacement à la volée.
    http://jerome.developpez.com/xmlxsl/...lpage=&rpage=1

  3. #3
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    Merci pour votre reponse..
    svp, comment je peux recuperer ce resultat dans un fichier XML ?
    Meci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Points : 81
    Points
    81
    Par défaut
    En fait tu voudrais extraire un fichier xml d'un autre fichier xml ?

    Je ne sais pas si ça marche avec XmlNodeList, mais si tu passes par du XPath, tu peux récupérer un string contenant le xml du noeud sur lequel tu es (c'est InnerXml ou OuterXml). Une fois que tu es arrivé sur le bon noeud, tu écris dans un fichier le code xml...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    XmlDocument doc = new XmlDocument();
    doc.Load(FileName);
     
    XPathNavigator nav=doc.CreateNavigator();
    XPathNodeIterator nodes=nav.Select("//DATA_TEXTE");
     
    foreach (XPathNavigator node in nodes)
    {
        // tu fais ce que tu veux avec node.OuterXml ...
    }
    Mais je ne suis pas sur d'avoir bien compris ce que tu veux faire

    Bonne journée

  5. #5
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    SVP j'ai un probleme je voulais voir est ce que le programme suivant m'affiche les données ou pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     string name="";
     XmlNodeList fileNodes = doc.SelectNodes("//DATA_TEXTE");
               foreach (XmlNode  node in fileNodes)
                 {
                     xslt.Transform(node.InnerText, XmlWriter.Create(Server.MapPath("\\html_fo.fo")));
                     name = node.InnerText;
                }
                TextBox1.Text = name;
    mais il m'affiche pas textbox1.text est tjr à vide, la commande :
    XmlNodeList fileNodes = doc.SelectNodes("//DATA_TEXTE");
    ça ne s'execute pas ?
    y t'il un probleme :
    Merci bien

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    salut,

    Normalement d'aprés ce que j'ai compris de ton code tu as une boucle qui tourne et a chaque fois tu ecrase la valeur de "name" par le nouveau noeud alors :
    1-verifie si la valeur de ton dernier noeud n'est pas une chaine vide
    2-il faut que tu utilise un tableau si tu veut afficher la valeur de tout les noeuds ou bien que tu insere l'affectation au textbox au sein de la boucle avec concatenation.

    avant tout ça pour verifier que ton code marche met un messagebox au sein de la boucle pour qu il t'affiche toute les valeurs une fois c est fait tu verifie les deux truc que je t ai dit.


    bon courage

  7. #7
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    comment je fais pourque à l'interieur de a boucle je par un fichier XML est je change une valeur d'une donner avec la valeur du noeud courant.
    merci

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    salut,

    pour parcourir noeud par noeud tu monte et tu redescend a ta guise dans ton fichier xml tu utilise le xpathnavigator c'est lui qui te permet ceci et pour le changement de la valeur de l'attribut il suffit de cliquer sur ce lien :


    j'espert que ton probleme sera resolu
    Bon Courage

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/07/2008, 11h07
  2. Réponses: 1
    Dernier message: 26/06/2006, 17h29
  3. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41
  4. traitement de fichier XML dans une Tache planifiée
    Par marivi dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 21/06/2005, 10h40
  5. Réponses: 3
    Dernier message: 13/12/2004, 13h54

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