Question
Fusionner 2 fichiers xml
- Boulch
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 5 mois 3 semaines #32713
par Boulch
Fusionner 2 fichiers xml a été créé par Boulch
Bonjour,
je tente depuis quelques semaines de fusionner 2 fichiers XML en powershell mais je n'y connais rien.
Voici les deux fichiers que récupère mon script :
wcf.tourinsoft.com/Syndication/3.0/cdt85...888f9c1a4d/$metadata
wcf.tourinsoft.com/Syndication/3.0/cdt85...8666a7e35f/$metadata
L'un possède des données simples, l'autre des données enrichies et j'aimerai que l'un complète l'autre pour avoir un fichier unique complet.
J'ai fait cela :
Mais cela copie le fichier 2 a la suite du fichier 1. Je doute que cela soit la structure voulu...
Merci d'avance, je suis perdu
je tente depuis quelques semaines de fusionner 2 fichiers XML en powershell mais je n'y connais rien.
Voici les deux fichiers que récupère mon script :
wcf.tourinsoft.com/Syndication/3.0/cdt85...888f9c1a4d/$metadata
wcf.tourinsoft.com/Syndication/3.0/cdt85...8666a7e35f/$metadata
L'un possède des données simples, l'autre des données enrichies et j'aimerai que l'un complète l'autre pour avoir un fichier unique complet.
J'ai fait cela :
$WebRequest = New-Object System.Net.WebClient
$WebRequest.DownloadFile([System.Uri]'https://wcf.tourinsoft.com/Syndication/3.0/cdt85/953fa134-788f-441d-bc2e-c4888f9c1a4d/$metadata', "C:\Users\t-aubry\Desktop\tourinsoft\flux\Restaurants\test1.xml")
$WebRequest.DownloadFile([System.Uri]'https://wcf.tourinsoft.com/Syndication/3.0/cdt85/2a2f82af-f82f-4831-b958-798666a7e35f/$metadata', "C:\Users\t-aubry\Desktop\tourinsoft\flux\Restaurants\test2.xml")
Get-Content C:\Users\toto\Desktop\tourinsoft\flux\test1.xml, C:\Users\toto\Desktop\tourinsoft\flux\test2.xml | Out-File C:\Users\toto\Desktop\tourinsoft\flux\merge.xml
Mais cela copie le fichier 2 a la suite du fichier 1. Je doute que cela soit la structure voulu...
Merci d'avance, je suis perdu

Connexion ou Créer un compte pour participer à la conversation.
- Boulch
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 5 mois 3 semaines #32714
par Boulch
Réponse de Boulch sur le sujet Fusionner 2 fichiers xml
Dans l'idéal, l'objectif final sera un fichier json mais je me dit étape par étape.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6248
- Remerciements reçus 64
il y a 5 mois 3 semaines - il y a 5 mois 3 semaines #32719
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Fusionner 2 fichiers xml
Salut,
il faut transformer le fichier texte .xml en document XML :
Un essai rapido:
Effectivement les deux objets sont similaires mais a chacun un namespace différent. Une piste ?
stackoverflow.com/questions/3019136/erro...ent-document-context
il faut transformer le fichier texte .xml en document XML :
$WebRequest = New-Object System.Net.WebClient
$WebRequest.DownloadFile([System.Uri]'https://wcf.tourinsoft.com/Syndication/3.0/cdt85/953fa134-788f-441d-bc2e-c4888f9c1a4d/$metadata', "C:\Temp\test1.xml")
$WebRequest.DownloadFile([System.Uri]'https://wcf.tourinsoft.com/Syndication/3.0/cdt85/2a2f82af-f82f-4831-b958-798666a7e35f/$metadata', "C:\Temp\test2.xml")
[xml]$A=Get-Content C:\Temp\test1.xml
[xml]$B=Get-Content C:\Temp\test2.xml
Un essai rapido:
$a.edmx.DataServices.schema[1].AppendChild($b.edmx.DataServices.schema[1].EntityContainer)
Exception lors de l'appel de «AppendChild» avec «1» argument(s): «Le noeud à insérer provient d'un contexte de document différent.»
Effectivement les deux objets sont similaires mais a chacun un namespace différent. Une piste ?
stackoverflow.com/questions/3019136/erro...ent-document-context
Tutoriels PowerShell
Dernière édition: il y a 5 mois 3 semaines par Laurent Dardenne.
Les utilisateur(s) suivant ont remercié: Boulch
Connexion ou Créer un compte pour participer à la conversation.
- Boulch
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 5 mois 3 semaines #32726
par Boulch
Réponse de Boulch sur le sujet Fusionner 2 fichiers xml
Finalement j'ai réussi en faisant ça :
Le script évolue mais il reste certains problèmes, l'encodage ne semble pas fonctionner, j'ai un problème avec les accents.
Aussi j'ai plusieurs fois xml:space="preserve" dans mon code, j'ai essayer de rajouter :[/code]
Mais cela ne fonctionne pas...
Quelqu'un a une piste ?
$WebRequest = New-Object System.Net.WebClient
$WebRequest.DownloadFile([System.Uri]'https://wcf.tourinsoft.com/Syndication/3.0/cdt85/953fa134-788f-441d-bc2e-c4888f9c1a4d/Objects', "C:\Users\toto\Desktop\tourinsoft\flux\Restaurants\test1.xml") #téléchargement des fichiers de data simples et enrichies
$WebRequest.DownloadFile([System.Uri]'https://wcf.tourinsoft.com/Syndication/3.0/cdt85/2a2f82af-f82f-4831-b958-798666a7e35f/Objects', "C:\Users\toto\Desktop\tourinsoft\flux\Restaurants\test2.xml")
$xmldoc = new-object xml
$rootnode = $xmldoc.createelement("stuff")
$xmldoc.appendchild($rootnode)
$finalxml = $null
$files = gci C:\Users\toto\Desktop\tourinsoft\flux\Restaurants\
foreach ($file in $files) {
[xml]$xmlstuff = gc $file.fullname
$innerel = $xmlstuff.selectnodes("/*/*")
foreach ($inone in $innerel) {
$inone = $xmldoc.importnode($inone, $true)
$rootnode.appendchild($inone)
}
}
# get rid of multiple spaces. might want to add regex to replace line breaks etc.
foreach ($t34 in $rootnode.selectnodes("//*/text()")) {
$t34.innertext = [regex]::replace($t34.innertext,"\s+"," ")
}
# create and set xmlwritersettings
$xws = new-object system.xml.XmlWriterSettings
$xws.Indent = $true
$xws.indentchars = "`t"
$xtw = [system.xml.XmlWriter]::create("C:\Users\toto\Desktop\tourinsoft\flux\merge.xml", $xws)
$xmldoc.WriteContentTo($xtw)
$xtw.flush()
$xtw.dispose()
Le script évolue mais il reste certains problèmes, l'encodage ne semble pas fonctionner, j'ai un problème avec les accents.
Aussi j'ai plusieurs fois xml:space="preserve" dans mon code, j'ai essayer de rajouter :
[code]$xws.Encoding = [System.Text.Encoding]::Unicode
Mais cela ne fonctionne pas...
Quelqu'un a une piste ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6248
- Remerciements reçus 64
il y a 5 mois 3 semaines #32728
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Fusionner 2 fichiers xml
Vérifie déjà si l'encodage est correct à la réception du fichier.
Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: Boulch
Connexion ou Créer un compte pour participer à la conversation.
- Boulch
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 5 mois 3 semaines #32735
par Boulch
Réponse de Boulch sur le sujet Fusionner 2 fichiers xml
Après le téléchargement des fichiers, les accents sont bien présents, c'est lors de la fusion que le fichier xml ne prend plus les accents, j'ai vérifié et l'encodage semble ètre en utf-8 mais lorsque j'ouvre dans chrome les accents ne sont pas pris...
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.093 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Fusionner 2 fichiers xml