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

ASP.NET Discussion :

[c#/XML] Problème de sauvegarde XML


Sujet :

ASP.NET

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 60
    Par défaut [c#/XML] Problème de sauvegarde XML
    Bonjour à tous,

    j'ai encore un petit problème (rien de grave) sur une fonction qui doit lire un fichier xml, et remplacer un mot par un autre dans une propriété de node (une fois le bon node localisé)

    Voici tout d'abord le code :

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
                for (int i = 0; i < lst_page.Items.Count; i++)
                {
     
                    page_lst_str = page_lst_str + " " + lst_page.Items[i].Text;
     
                }
                string[] page_lst = page_lst_str.Split(' ');
     
                for (int j = 0; j < page_lst.Count(); j++)
                {
                    //Find nom page, find number attribute where name = roles
                    //Rajoute le nom du roles à la liste avec un espace
                    //Recherche par le reader
                    //Write une fois la dernière verification finie juste write en utilisant les i,j,k
                    //Création du reader XML afin de parcourir le XML et vérifier les autorisations d'accès a la page
     
                    XmlTextReader tr2 = null;
                    try
                    {
                        //Ouverture du XML dans le reader
                        tr2 = new XmlTextReader("");
                        tr2.XmlResolver = null;
                        XmlDocument doc2 = new XmlDocument();
                        doc2.Load(tr2);
     
                        //Spécifie les nodes
                        XmlNodeList list2 = doc2.GetElementsByTagName("page");
     
                        //Début de la recherche dans les nodes (pages) présents
                        foreach (XmlNode node in list2)
                        {
                            if (node.HasChildNodes)
                            {
                                for (int i = 0; i < node.ChildNodes.Count; i++)
                                {
                                    for (int k = 0; k < node.ChildNodes[i].Attributes.Count; k++)
                                    {
                                        for (int m = 0; m < node.ChildNodes[i].Attributes.Count; m++)
                                        {
                                            if (node.ChildNodes[i].Attributes[k].Name == "title" && node.ChildNodes[i].Attributes[m].Name == "roles")
                                            {
                                                string selected_role = lst_roles.SelectedItem.Value.ToString();
                                                selected_role.Trim();
                                                string roles_var_xml2 = node.ChildNodes[i].Attributes[m].Value.ToString();
                                                string roles_var_xml = roles_var_xml2.Replace(selected_role.ToString(), "");
     
     
                                                //roles_var_xml = roles_var_xml.Replace(selected_role, "u");
     
                                                //regler le probleme suivant : selected role ne se supprime pas de la string de role auth
     
                                                if (page_lst[j] == node.ChildNodes[i].Attributes[k].Value.ToString())
                                                {
                                                    //Ecrit dans le node.ChildNodes[i].Attributes[m].Value
                                                    list2.Item(0).ChildNodes[i].Attributes[m].Value = roles_var_xml + " " + temp_role;
     
                                                }
                                                else
                                                {
                                                    list2.Item(0).ChildNodes[i].Attributes[m].Value = roles_var_xml.ToString();
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        //Ferme le flux XML
                        tr2.Close();
                        doc2.Save("");
                    }
                    catch (XmlException ex)
                    {
                        Response.Write("erreur");
                    }
     
     
                }
    Le problème se trouve ici, le string ne supprime pas les mots demandé (selected string = "bo" par exemple)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string selected_role = lst_roles.SelectedItem.Value.ToString();
                                                selected_role.Trim();
                                                string roles_var_xml2 = node.ChildNodes[i].Attributes[m].Value.ToString();
                                                string roles_var_xml = roles_var_xml2.Replace(selected_role.ToString(), "");

    Car je souhaite ensuite soit le mettre a jour, soit remettre le string sans ce mot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (page_lst[j] == node.ChildNodes[i].Attributes[k].Value.ToString())
                                                {
                                                    //Ecrit dans le node.ChildNodes[i].Attributes[m].Value
                                                    list2.Item(0).ChildNodes[i].Attributes[m].Value = roles_var_xml + " " + temp_role;
     
                                                }
                                                else
                                                {
                                                    list2.Item(0).ChildNodes[i].Attributes[m].Value = roles_var_xml.ToString();
                                                }

    Et voici le XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <page>
      <siteMapNode title="User_Creation" url="User_Creation.aspx" roles="   test2 bo">
      </siteMapNode>
      <siteMapNode title="User_C2reation" url="User_Creatio2n.aspx" roles="    xorgrg2 test2 bo">
      </siteMapNode>
    </page>

    Merci à ceux qui prendront le temps de me lire car pour le moment, ca me laisse le mot d'origine que je souhaite supprimer dans roles.


    Merci d'avance !

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Salut,


    si tu mets un breakpoint sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string roles_var_xml2 = node.ChildNodes[i].Attributes[m].Value.ToString();
    string roles_var_xml = roles_var_xml2.Replace(selected_role.ToString(), "");
    est-ce qu'après passage du poitn d'arret, dans roles_var_xml, le replace est bien fait ?

    Parce que la, comme ca, en diagonale, je ne suis pas sur que ton pb ne vienne pas plutot du fait qu'il y'a une bouelette dans la sauvegarde de ton fichier

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 60
    Par défaut
    Merci je vais voir de ce côté la !

    ps : Sinon le breakpoint m'a montré qu'effectivement notre ami replace marche bien, le problème vient bien du doc.save mais je ne voit pas ou le faire autrepart, il faudrait que je sauvegarde entre chaque modif mais cela m'oblige à fermer le reader...

    Si quelqu'un connait la solution je suis preneur.


    Merci !

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 60
    Par défaut
    J'apporte quelques précisions sur le problème :
    Si je souhaite modifier deux nodes d'un coup, il ne m'enregistrera que la modification du dernier node modifié..

    Merci encore

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 60
    Par défaut
    Le problème venait qu'il fallait que je break les boucles for un fois le node trouvé et modifié.

    Merci à ceux qui m'ont aidé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XML]Problème d'encodage XML avec un XmlTextWriter
    Par fragmonster dans le forum VB.NET
    Réponses: 0
    Dernier message: 15/09/2009, 10h28
  2. Perl + XML : problème de '-' avec XML::Simple
    Par rico29600 dans le forum Modules
    Réponses: 6
    Dernier message: 17/07/2007, 14h50
  3. [Linux-XML] Probléme avec python-xml
    Par Exodus dans le forum Général Python
    Réponses: 5
    Dernier message: 27/03/2007, 15h47
  4. Réponses: 2
    Dernier message: 06/07/2006, 08h47
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00

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