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

Silverlight Discussion :

Linq To XML avec silverlight ajouter un noeud


Sujet :

Silverlight

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 159
    Points : 88
    Points
    88
    Par défaut Linq To XML avec silverlight ajouter un noeud
    Bonjour,

    Je galere depuis plusieurs heures a essayer de trouver une solution a un probleme pourtant simple.

    J'ai comme schema XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <contacts>
      <contact contactId="2">
        <firstName>Barry</firstName>
        <lastName>Gottshall</lastName>
      </contact>
      <contact contactId="3">
        <firstName>Armando</firstName>
        <lastName>Valdes</lastName>
      </contact>
    </contacts>
    je voudrais obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <contacts>
      <contact contactId="2">
        <firstName>Barry</firstName>
        <lastName>Gottshall</lastName>
        <phone type="portable">06123456789</phone>
      </contact>
      <contact contactId="3">
        <firstName>Armando</firstName>
        <lastName>Valdes</lastName>
      </contact>
    </contacts>
    Autrement dit comment se positionner sur un noeud bien precis puis ensuite creer un noeud à cet endroit. j'ai des bribes de codes c# avec silverlight mais ca donne rien je me bats avec linq. La requete linq qui va bien serait grandement apprécié.

    Voila

    Merci beaucoup.

    Maxxou

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Je sais pas si Silverlight impose des restrictions mais voila un bout de code qui marche:
    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
     
    var myXml = @"<contacts>
      <contact contactId='2'>
    	<firstName>Barney</firstName>
    	<lastName>Gottshall</lastName>
      </contact>
      <contact contactId='3'>
    	<firstName>Armando</firstName>
    	<lastName>Valdes</lastName>
      </contact>
    </contacts>";
    XElement root = XElement.Parse(myXml);
    var myNode = from els in root.Elements("contact")
    	where (string)els.Attribute("contactId")== "2"
    	select els;
    myNode.First().Add(new XElement("phone","555-123-456"));

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 159
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Merci pour ta reponse rapide j'essaye ta solution mais je n'ai pas de resultat, il n y a pas d erreurs pdt la compilation ou l execution mais il semble que mon xml ne change pas. J'ai fini par essayé de juste ajouter a la fin de ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox.Show(myXml);
    Pour voir si le xml a changé et il reste identique, est ce qu il manque une ligne de code pour sauvegarder le resultat obtenu et remplacer l ancien xml?

    Merci

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Il faudrait d'abord charger un XDocument et appeler sa méthode Save.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  5. #5
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Ah ben en fait y'a une méthode Save sur le XElement.

    Tu peux dont appeler celle là.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 159
    Points : 88
    Points
    88
    Par défaut
    Ah c'est bon j ai trouvé il manquait en effet juste quelques ligne pour sauvegarder le resultat obtenu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    StringBuilder sb = new StringBuilder();
    XmlWriter writer = XmlWriter.Create(sb, settings);
    root.Save(writer);
    writer.Flush();
    string outputXml = sb.ToString();
     
    MessageBox.Show(outputXml);
    Super !

    Merci beaucoup à toi Pitmaverick j ai galeré des heures sur internet pour y arriver je n y serais pas parvenu sans toi j étais en train de clairement tourner en rond.

    Edit : Merci du coté aussi de Montréal

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    De rien, c'était avec plaisir! Cela dit saches que je n'ai pas un grand mérite, la doc était très bien fournie à ce sujet : http://msdn.microsoft.com/fr-fr/library/bb387083.aspx

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    J'ai beau essaye et mon fichier xml ne bouge pas

    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
     Dim myNode = From els In root.Descendants("DataBases")
                     Select els
            '.Elements("CDataBase")
            'Where els.Attribute("id") = "1"
            myNode.First().Add(New XElement(<CDataBase>
                                                <id>3</id>
                                                <alias>sdf</alias>
                                                <name>sdf</name>
                                                <serveur>sdf</serveur>
                                                <description>sdf</description>
                                                <lastused>true</lastused>
                                                <connectionstring>Data Source=sdf;Initial Catalog=sdf;User ID=MORPHUSER;Password=msuser;timeout=30;</connectionstring>
                                                <dbtype>SQLServer</dbtype>
                                            </CDataBase>))
     
            Dim settings = New XmlWriterSettings()
            settings.Indent = True
            Dim sb = New StringBuilder()
            Dim writer = XmlWriter.Create(sb, settings)
            root.Save(writer)
            writer.Flush()
            Dim outputXml As String = sb.ToString()

    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
    <?xml version="1.0" encoding="utf-8"?>
    <databases xmlns:cm="http://www.sample.net/cm">
      <DataBases>
        <CDataBase>
          <id>1</id>
          <alias>f</alias>
          <name>sdf</name>
          <serveur>sdf</serveur>
          <description>sdff</description>
          <lastused>true</lastused>
          <connectionstring>Data Source=sdf;Initial Catalog=sdf;User ID=MORPHUSER;Password=msuser;timeout=30;</connectionstring>
          <dbtype>SQLServer</dbtype>
        </CDataBase>
        <CDataBase>
          <id>2</id>
          <alias>Quickalias</alias>
          <name>Quick</name>
          <serveur>srv</serveur>
          <description>desc</description>
          <lastused>true</lastused>
          <connectionstring>Data Source=sdf;Initial Catalog=sdf;User ID=MORPHUSER;Password=msuser;timeout=30;</connectionstring>
          <dbtype>SQLServer</dbtype>
        </CDataBase>
      </DataBases>
    </databases>

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/06/2015, 09h38
  2. [XSLT 1.0] copie d'une structure xml avec suppression de certains noeuds
    Par oliv47 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 04/06/2015, 19h05
  3. Réponses: 6
    Dernier message: 07/02/2008, 16h21
  4. xml::simple ajouter un noeud
    Par flag dans le forum Modules
    Réponses: 2
    Dernier message: 29/06/2006, 10h48
  5. [DOM] PHP5 et XML comment ajouter un noeud dans un noeud précis?
    Par titou250 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 20/04/2006, 21h02

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