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

Scripts/Batch Discussion :

XML vers ARRAY [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre éprouvé
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Novembre 2004
    Messages : 388
    Par défaut XML vers ARRAY
    Bonjour,

    J'ai un fichier XML avec pas mal de données que j'aimerais convertir en un fichier CSV ou XLSX
    j'ai une multitudes d'arborescence et écrire chaque propriétés me prendrait beaucoup de temps
    j'ai besoin de récupérer toutes les valeurs des attributions et les valeurs de chaque node
    exemple (en gras)
    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
    35
    36
    37
    38
    39
    <root>
    ...
                <personnes>
                    <personne id="000000">
                        <personne_physique>
                            <civilite code="M"/>
                            <nom>user_nom1</nom>
                            <prenom>user_Prenom1</prenom>
                            <date_naissance>01/01/2000</date_naissance>
                        </personne_physique>
                        <qualite code="YY"/>
                        <ref_externes>
                            <id system="XXX">fffffff-ddddd-cccc-bbbb-88888888</id>
                        </ref_externes>
                    </personne>
                    <personne id="CONJOINT">
                        <personne_physique>
                            <civilite code="MME"/>
                            <nom>User_Nom2</nom>
                            <prenom>User_Prenom2</prenom>
                            <date_naissance>01/01/2001</date_naissance>
                        </personne_physique>
                        <ref_externes>
                            <id system="XXX">fffffff-ddddd-cccc-bbbb-88888884</id>
                        </ref_externes>
                    </personne>
                    <personne id="00002">
                        <personne_physique>
                            <civilite code="M"/>
                            <nom>User_Nom3</nom>
                            <prenom>User_Prenom3</prenom>
                            <date_naissance>01/01/2003</date_naissance>
                        </personne_physique>
                        <ref_externes>
                            <id system="XXX">fffffff-ddddd-cccc-bbbb-88888881</id>
                        </ref_externes>
                    </personne>
    ...
    </root>

    J'ai pleins d'autres nodes avec des noms different (au moins 120)
    Je me dit qu'il doit y avoir un truc en powershell pour extraire toutes les valeurs d'un coup ?

    En vous remerciant d'avance pour votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Il commence par <root> ton xml ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    C'est assez facile en Powershell il suffit d'afficher ce que l'on souhaite.

    Mon fichier test.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
    35
    36
    37
    38
    39
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <personnes>
          <personne id="000000">
             <personne_physique>
                <civilite code="M" />
                <nom>user_nom1</nom>
                <prenom>user_Prenom1</prenom>
                <date_naissance>01/01/2000</date_naissance>
             </personne_physique>
             <qualite code="YY" />
             <ref_externes>
                <id system="XXX">fffffff-ddddd-cccc-bbbb-88888888</id>
             </ref_externes>
          </personne>
          <personne id="CONJOINT">
             <personne_physique>
                <civilite code="MME" />
                <nom>User_Nom2</nom>
                <prenom>User_Prenom2</prenom>
                <date_naissance>01/01/2001</date_naissance>
             </personne_physique>
             <ref_externes>
                <id system="XXX">fffffff-ddddd-cccc-bbbb-88888884</id>
             </ref_externes>
          </personne>
          <personne id="00002">
             <personne_physique>
                <civilite code="M" />
                <nom>User_Nom3</nom>
                <prenom>User_Prenom3</prenom>
                <date_naissance>01/01/2003</date_naissance>
             </personne_physique>
             <ref_externes>
                <id system="XXX">fffffff-ddddd-cccc-bbbb-88888881</id>
             </ref_externes>
          </personne>
       </personnes>
    </root>

    Le code Powershell
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $xml = [xml] (Get-Content -Path "test.xml" -Encoding UTF8)
     
    $xml.root.personnes.personne | Select-Object @{label='personne_id'; expression={$_.id}}, 
    @{label='civilite'; expression={$_.personne_physique.civilite.code}}, 
    @{label='nom'; expression={$_.personne_physique.nom}}, 
    @{label='prenom'; expression={$_.personne_physique.prenom}}, 
    @{label='date_naissance'; expression={$_.personne_physique.date_naissance}}, 
    @{label='qualite'; expression={$_.qualite.code}}, 
    @{label='system_id'; expression={$_.ref_externes.id.system}}, 
    @{label='system_id_value'; expression={$_.ref_externes.id."#text"}} | Export-Csv -LiteralPath "test.csv" -Encoding UTF8 -NoTypeInformation

    Le fichier de sortie test.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "personne_id","civilite","nom","prenom","date_naissance","qualite","system_id","system_id_value"
    "000000","M","user_nom1","user_Prenom1","01/01/2000","YY","XXX","fffffff-ddddd-cccc-bbbb-88888888"
    "CONJOINT","MME","User_Nom2","User_Prenom2","01/01/2001",,"XXX","fffffff-ddddd-cccc-bbbb-88888884"
    "00002","M","User_Nom3","User_Prenom3","01/01/2003",,"XXX","fffffff-ddddd-cccc-bbbb-88888881"

  4. #4
    Membre éprouvé
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Novembre 2004
    Messages : 388
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Non c'est juste une partie du fichier XML ou j'ai ajouté une racine

    Citation Envoyé par ericlm128 Voir le message
    Donc je vais etre obligé d'écrire les 120 propriétés (pas trop le choix), il n'y a pas de commande magique qui fait l'extraction de toutes les propriétés et attrib (un peu comme excel le fait)
    Merci pour votre aide
    Le code que vous avez donné est plus propres que le miens je vais l'adopter.

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je n'avais pas compris que tout voulait "applatir" tout le xml en csv, ca doit être réalisable mais il y a un peu de travail et je n'ai pas trop le temps

  6. #6
    Membre éprouvé
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Novembre 2004
    Messages : 388
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Je n'avais pas compris que tout voulait "applatir" tout le xml en csv, ca doit être réalisable mais il y a un peu de travail et je n'ai pas trop le temps
    Je pense que ça va être dur dur, mais je me lance quand meme
    Faut que je tests chaque nodes attributes;count et valeur et que je récupère tout ça
    si je réussi a faire un truc correct je manquerais pas de le mettre ici

    Merci de m'avoir répondu

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

Discussions similaires

  1. [XL-2019] Array vers XML et XML vers Array
    Par Rémy.A dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/07/2020, 12h22
  2. [Mysql] Donnée XML >vers> BDD
    Par largiss dans le forum XQUERY/SGBD
    Réponses: 14
    Dernier message: 28/02/2017, 17h51
  3. XML vers XML avec XSL
    Par guizz79 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2005, 09h43
  4. [XSLT] XML vers XML
    Par ren0 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/10/2004, 12h54
  5. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 21h07

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