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

Développement Web avec .NET Discussion :

Filtrage d'un attribut dans un fichier XML


Sujet :

Développement Web avec .NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2008
    Messages : 130
    Par défaut Filtrage d'un attribut dans un fichier XML
    Bonjour à tous,

    je suis actuellement en cours de développement d'une application d'envoi de SMS.
    Il me reste un dernier point à terminer concernant la journalisation des envois.

    Lorsqu'un utilisateur envoi un SMS, un fichier XML est complété avec les envois du sms (numéro de tel, contenu du sms, date d'envoi, type d'envoi (si planifié ou si envoi immédiat) et l'utilisateur qui a envoyé le SMS.

    voici comment je génère le fichier:

    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
    XmlDocument doc = new XmlDocument();
                    doc.Load("CHEMIN DU FICHIER XML");
                    XmlElement details = doc.CreateElement("Details");
                    XmlAttribute utilisateur = doc.CreateAttribute("Utilisateur");
                    XmlAttribute numtel = doc.CreateAttribute("NumTel");
                    XmlAttribute SMScontent = doc.CreateAttribute("SmsContent");
                    XmlAttribute date = doc.CreateAttribute("Date");
                    XmlAttribute sendtype = doc.CreateAttribute("SendType");
                    utilisateur.Value = Page.User.Identity.Name;
                    numtel.Value = TextBox2.Text;
                    SMScontent.Value = TextArea3.Value;
                    sendtype.Value = "Planifié";
                    date.Value = Calendar1.SelectedDate.AddHours(int.Parse(DropDownList3.Text)).AddMinutes(int.Parse(DropDownList4.Text)).ToString();
                    details.Attributes.Append(utilisateur);
                    details.Attributes.Append(numtel);
                    details.Attributes.Append(SMScontent);
                    details.Attributes.Append(date);
                    details.Attributes.Append(sendtype);
                    doc.DocumentElement.AppendChild(details);
                    doc.Save("CHEMIN DU FICHIER XML");
    Le fichier xml se génère correctement et ressemble à ceci:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="utf-8"?>
    <Envois>
      <Details Utilisateur="user1" NumTel="06XXXXXXX" SmsContent="Modèle 3" Date="12/04/2019 09:19:29" SendType="Immédiat" />
      <Details Utilisateur="user2" NumTel="06XXXXXXX" SmsContent="Personnalisé" Date="12/04/2019 09:20:00" SendType="Planifié" />
    </Envois>

    J'ai créé une page sur l'application qui permet d'afficher ce fichier XML via un gridview et une xmlDataSource qui va récupérer le contenu du fichier xml et l'affiche dans un tableau.
    Je souhaiterais donc pouvoir filtrer l'affichage de ce fichier en affichant uniquement les lignes concernant un user en particulier.
    Pour se faire, je pensais utiliser la valeur de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page.User.Identity.Name
    Quelqu'un pourrait me filer un petit coup de main car je ne comprend pas le fonctionnement des requêtes vers les fichiers XML, j'ai essayé de faire ceci mais ça ne fonctionne pas et je ne comprend pas pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     string filePath = "CHeMIN FICHIER XML";
                DataSet ds = new DataSet();
                ds.ReadXml(filePath);
                var utilisateurs= ds.Tables[0].AsEnumerable();
                var query = from utilisateur in utilisateurs
                            where utilisateur.Field<string>("Utilisateur") == Page.User.Identity.Name
                            select utilisateur;
                GridView1.DataSource = query.ToList();
                GridView1.DataBind();

    Merci d'avance pour votre aide


    EDIT:
    J'ai trouvé un moyen en dur de faire ce que je souhaite en utilisant une expression XPATH au niveau du XmlDataSource:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XPath="Envois/Details[@Utilisateur='user1']">
    ceci me renvoit bien uniquement les enregistrements avec Utilisateur = User1 mais j'aimerais le rendre dynamique en fonction de l'utilisateur qui est connecté à l'application (authentification Windows) pour cela j'ai essayé d'intégrer une variable à la déclaration de l'expression XPATH au niveau du xmldatasource mais ça ne marche pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XPath="Envois/Details[@Utilisateur='<%Page.User.Identity.Name%>']">
    Je pense que je ne suis pas loin.. si jamais quelqu'un connait un moyen d'éxecuter du C# dans de l'asp... je suis preneur... j'ai essayé pas mal de combinaisons différentes rien ne prend...

    Merci d'avance !

  2. #2
    Membre expérimenté Avatar de M_Makia
    Homme Profil pro
    dev
    Inscrit en
    Février 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 121
    Par défaut
    Bonjour,

    As-tu regarder LinqToXml.
    Je pense que ça pourrais t'aider.
    https://docs.microsoft.com/fr-fr/dot...o-xml-overview

Discussions similaires

  1. [PHP] Problème d'ajout d'attributs dans un fichier xml
    Par sismic dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 10/06/2009, 17h16
  2. comment je pourrais modifier un attribut dans un fichier xml
    Par ryoussef19 dans le forum Visual C++
    Réponses: 6
    Dernier message: 24/08/2007, 14h16
  3. VBScript ASP ET XMLDOM Modification attribut dans un fichier XML
    Par PrinceMaster77 dans le forum VBScript
    Réponses: 12
    Dernier message: 11/06/2007, 06h13
  4. Affecter un attribut dans un fichier XML ou XSL
    Par LLaurent dans le forum XMLRAD
    Réponses: 7
    Dernier message: 05/06/2003, 14h04
  5. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 15h22

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