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 :

Modification du nom des noeud dans un XML


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Modification du nom des noeud dans un XML
    Bonjour,
    Comment faire pour changer le nom des nœuds XML en C#?
    Par exemple voici un extrait d'un fichier XML.
    Code xml : 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
    <corps>
             <part1>
                  <chap1>
                       <titre1>
                            <soustitre1>
                            </soustitre1>
                       </titre1>
                       <titre2>
                       </titre2>
                  </chap1>
                  <chap2>
                  </chap2>
                  <chap3>
                  </chap3>
             </part1>
             <part2>
                  <chap1>
                  </chap1>
             </part2>         
             <part3>
                  <chap1>
                  </chap1>
                  <chap2>
                  </chap2>
             </part3>
             <part4>
             </part4>
             <part5>
                  <chap1>
                  </chap1>
                  <chap2>
                  </chap2>
             </part5>
    </corps>


    Le XML résultat doit être comme siut:
    Code xml : 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
    <corps>
             <p class="part1">
                  <p class="chap1">
                       <p class="titre1">
                            <p class="soustitre1">
                            </p>
                       </p>
                       <p class="titre2">
                       </p>
                  </p>
                  <p class="chap2">
                  </p>
                  <p class="chap3">
                  </p>
             </p>
             <p class="part2">
                  <p class="chap1">
                  </p>
             </p>         
             <p class="part3">
                  <p class="chap1">
                  </p>
                  <p class="chap2">
                  </p>
             </p>
             <p class="part4">
             </p>
             <p class="part5">
                  <p class="chap1">
                  </p>
                  <p class="chap2">
                  </p>
             </p>
    </corps>


    Quelqu'un pourra m'aider

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Tu peux le faire facilement avec Linq to XML :

    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
    static void Main()
    {
        string originalFile = @"D:\original.xml";
        string transformedFile = @"D:\transformed.xml";
        var original = XDocument.Load(originalFile);
        var transformed = TransformDocument(original);
        transformed.Save(transformedFile);
    }
     
     
    XDocument TransformDocument(XDocument doc)
    {
        var newElements = doc.Root.Elements().Select(TransformElement);
        var newDoc = new XDocument(new XElement(doc.Root.Name, newElements));
        return newDoc;
    }
     
    XElement TransformElement(XElement e)
    {
        return new XElement("p", new XAttribute("class", e.Name), e.Elements().Select(TransformElement));
    }
    Sinon, tu peux utiliser une transformation XSL a priori.

    Soit dit en passant, c'est un peu bizarre comme format de sortie... on dirait du pseudo HTML, avec une classe CSS différente pour chaque paragraphe (ce qui n'a pas beaucoup de sens)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Le problème c'est que tous les donnée dans le Xml sont perdu.
    Vous trouvez un exemple de xml
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Bah moi j'ai répondu par rapport à l'exemple que tu donnais dans la question, hein
    En fait le schéma n'a pas grand chose à voir avec ton exemple initial : par exemple je ne vois pas de "<part1>", "<part2>", "<chap1>" etc, mais seulement des "<part>" ou "<chap>"... (ce qui est d'ailleurs nettement plus pratique). Il n'y a pas non plus d'éléments "<titre>" ou "<soustitre>" ; est-ce qu'ils se présentent de la même façon, avec un attribut "folio" ? Je suppose qu'il ne faut pas remplacer certains éléments, comme "<p>" ou "<i>" par exemple ?

    Bref, les "spécifications" de ton problème sont un peu insuffisantes pour l'instant

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est assez facile non, vois du coté de LINQ2XML,

    Recuperer tout les noeuds enfants du noeud principal => IEnumerable
    Pour chaque noeud de l'IEnumerable :
    - Recuperer XElement.Name => nodeName
    - Renommer XElement.Name en <p>
    - Ajouter l'attribut class = nodeName : XElement.SetAttributeValue("class", nodeName")

Discussions similaires

  1. Ajouter des noeud dans un fichier XML
    Par chinoismasque dans le forum Windows Phone
    Réponses: 4
    Dernier message: 02/08/2011, 16h32
  2. [XMLBEANS] Surfer et ajouter des noeuds dans mon XML
    Par akrogames dans le forum APIs
    Réponses: 0
    Dernier message: 05/12/2010, 17h16
  3. [StAX] Problème underscore dans le nom des noeuds XML avec stax/xstream
    Par mandarindi dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 19/08/2010, 09h51
  4. changer le nom des balises dans un XML
    Par ellgafsi dans le forum Modules
    Réponses: 13
    Dernier message: 25/03/2009, 15h10
  5. [XML] [SAX] Extraire le nom des balises dans XML
    Par Fusio dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/06/2007, 23h19

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