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 :

Accès xml avec namespaces [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Août 2022
    Messages : 4
    Par défaut Accès xml avec namespaces
    Bonjour

    Je voudrais retrouver dans ce fichier, les éléments dont la balise est [ns4:ID] et modifier le fichier au niveau des balises [ns4:BirthDate].
    J'ai déjà fait cela sur des fichiers xml avec des balises simples, ici mon souci c'est que je ne parviens pas à le faire à cause du namespace précédant les balises :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <ns2:invoice xmlns="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:8" xmlns:ns2="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:2" xmlns:ns3="urn:un:unece:uncefact:data:standard:QualifiedDataType:8" xmlns:ns4="urn:un:unece:uncefact:data:standard:PersonInformationEntity:1" versionID="1.2">
    	<ns2:CrossIndustryInvoice>
    		<ns2:CIIHExchangedDocumentContext>
    			<VersionID>1.2</VersionID>
    			<SpecifiedTransactionID>0202210648</SpecifiedTransactionID>
    		</ns2:CIIHExchangedDocumentContext>
    		<ns2:CIIHExchangedDocument>
    			<ID>0202210648-1</ID>
    			<TypeCode>380</TypeCode>
    			<IssueDateTime>2022-05-20T11:16:12Z</IssueDateTime>
    		</ns2:CIIHExchangedDocument>
    		<ns2:CIIHSupplyChainTradeTransaction>
    			<ApplicableCIIHSupplyChainTradeDelivery>
    				<ShipToCITradeParty>
    					<ns4:ID schemeID="token" schemeAgencyName="token">1001154</ns4:ID>
    					<ns4:Name>DURAND</ns4:Name>
    					<ns4:FirstName>DAVID</ns4:FirstName>
    					<ns4:LastName>ARNAULT</ns4:LastName>
    					<ns4:BirthDate>1910-09-10</ns4:BirthDate>
    					<ns4:PostalCITradeAddress>
    						<ns4:LineOne>ARNAULT MARC </ns4:LineOne>
    						<ns4:LineTwo>1 RUE GRANDE</ns4:LineTwo>
    						<ns4:PostcodeCode>92000</ns4:PostcodeCode>
    						<ns4:CityName>UNE VILLE</ns4:CityName>
    						<ns4:CountryID>FRANCE</ns4:CountryID>
    					</ns4:PostalCITradeAddress>
    					<ns4:ContextShipTo>
    						<ns4:GIR listID="ESPPADOM_GIR" listAgencyName="EDESS">3</ns4:GIR>
    					</ns4:ContextShipTo>
    				</ShipToCITradeParty>
    			</ApplicableCIIHSupplyChainTradeDelivery>
    		</ns2:CIIHSupplyChainTradeTransaction>
    	</ns2:CrossIndustryInvoice>
    </ns2:invoice>

    J'ai recherché des infos sur le net mais je ne m'en sors pas, merci d'avance pour votre aide.

  2. #2
    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
    Bonjour,

    Un truc dans le style ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [xml]$xml = Get-Content '.\XML test\doc.xml'
    $namespace = @{e="urn:un:unece:uncefact:data:standard:PersonInformationEntity:1"}
    $ID = Select-Xml -Xml $xml -XPath "//e:ID" -Namespace $namespace
    $ID.Node
    
    Pour avoir toutes les valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [xml]$xml = Get-Content '.\doc.xml'
    $namespace = @{e="urn:un:unece:uncefact:data:standard:PersonInformationEntity:1"}
    $ID = Select-Xml -Xml $xml -XPath "//e:*" -Namespace $namespace
    $ID.Node
    

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Août 2022
    Messages : 4
    Par défaut
    Merci pour ta réponse rapide et efficace, troxsa, ça fonctionne super.
    Par contre, je me rends compte qu'il me faut pouvoir itérer sur l'élément ShipToCITradeParty et récupérer les valeurs des champs : ns4:ID et ns4:BirthDate.
    Cet élément peut se retrouver de nombreuses fois dans le fichier et Select-Xml ne permet pas de récupérer une collection d'objets.

  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
    Je pense qu'il faut faire la meme chose mais avec NS2 et lire les childnodes pour récupérer ce que vous recherchez, je regarderais ce soir ou demain

  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
    Code powershell : 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
    $content = Get-Content 'test.xml' -Raw
    $xml = [xml]$content
     
    $namespaces = @{
        ns = "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:8"
        ns2 = "urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:2"
        ns3 = "urn:un:unece:uncefact:data:standard:QualifiedDataType:8"
        ns4 = "urn:un:unece:uncefact:data:standard:PersonInformationEntity:1"
    }
     
    $ships = Select-Xml -Xml $xml -XPath "//ns:ShipToCITradeParty" -Namespace $namespaces
    foreach($ship in $ships)
    {
        $ship.Node.ID.'#text'
        $ship.Node.BirthDate
    }

    ou

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $content = Get-Content 'test.xml' -Raw
    $xml = [xml]$content
     
    $nsmgr = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $xml.NameTable
    $nsmgr.AddNamespace("ns", "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:8")
    $nsmgr.AddNamespace("ns2", "urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:2")
    $nsmgr.AddNamespace("ns3", "urn:un:unece:uncefact:data:standard:QualifiedDataType:8")
    $nsmgr.AddNamespace("ns4", "urn:un:unece:uncefact:data:standard:PersonInformationEntity:1")
     
    $ships = $xml.SelectNodes("//ns:ShipToCITradeParty", $nsmgr)
    foreach($ship in $ships)
    {
        $ship.SelectSingleNode("ns4:ID", $nsmgr).'#text'
        $ship.SelectSingleNode("ns4:BirthDate", $nsmgr).'#text'
    }

  6. #6
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Août 2022
    Messages : 4
    Par défaut
    Bonjour

    Merci ericlm128 pour cette réponse détaillée, je vais étudier cela.

    Cdt

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

Discussions similaires

  1. [Inno Setup] XML avec NameSpaces
    Par peekabouh dans le forum Outils
    Réponses: 1
    Dernier message: 02/06/2017, 16h29
  2. Extraction de données avec XSL sur des XML avec namespace
    Par snake264 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/02/2012, 10h16
  3. [JDOM] Génération d'un XML avec Namespace (bug?)
    Par tapadami dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 03/08/2011, 18h56
  4. Problème parcours d'un fichier XML avec namespace
    Par ramroum1986 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 20/05/2010, 21h55
  5. Parcourir un XML avec namespace
    Par ujoodha dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 20/04/2006, 09h21

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