J'ai 100 fichiers zip avec 10-20 xml pour chaque fichier zip. J'ai besoin d'exporter un élément de balise spécifique à la CSV. Par exemple, j'ai 20 fichiers zip avec 10 xml chacun (20 * 10 = 200) 200 lignes sont dignes dans un CSV.
Exemple XML Code: P>
<?xml version='1.0' encoding='UTF-8'?>
<bookstore>
<book category="children">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2019</year>
<price>20.99</price>
</book>
</bookstore>
3 Réponses :
Ceci est un début. La clé est de se lancer vers [XML]. Il n'y a pas de cmdlet "importateur-xml". Vous voudrez sélectionner ce que vous voulez de l'objet PowerShell $ XML avant d'exporter vers CSV. $ xml.save ('fichier.xml') pour l'exporter sur XML.
PS /Users/js> [xml]$xml = get-content file.xml PS /Users/js> $xml xml bookstore --- --------- version="1.0" encoding="UTF-8" bookstore PS /Users/js> $xml | export-csv file.csv PS /Users/js> get-content file.csv "xml","bookstore" "version=""1.0"" encoding=""UTF-8""","System.Xml.XmlElement"
Alors .... Ceci ....
[xml]$XmlDoc = @'
<?xml version='1.0' encoding='UTF-8'?>
<bookstore>
<book category="children">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2019</year>
<price>20.99</price>
</book>
</bookstore>
'@
$XmlDoc.bookstore.book |
Select-Object -Property title, price
# Results
title price
----- -----
Harry Potter 20.99
$XmlDoc.bookstore.book |
Select-Object -Property title, price |
Export-Csv -Path 'E:\Temp\BookList.csv'
Import-Csv -Path 'E:\Temp\BookList.csv'
# Results
title price
----- -----
Harry Potter 20.99
Essayez quelque chose comme ceci:
[Void][Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
#take all zip files
Get-ChildItem "C:\temp\test1" -file -Filter "*.zip" | %{
#take only xml file
[IO.Compression.ZipFile]::OpenRead($_.FullName).Entries | where Fullname -like "*.xml" | %{
#extract xml only
$PathXMLFileextracted="C:\temp\" + $_.name
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $PathXMLFileextracted, $true)
#take content of xml
[XML] $xml=get-content $PathXMLFileextracted
#remove new xml created (for clean)
Remove-Item $PathXMLFileextracted
#take necessary data
$xml.bookstore.book | select title, price
}
} | export-csv "c:\temp\result.csv" -NoTypeInformation # export result to csv
dans votre question, vous devez inclure ce que vous avez essayé jusqu'à présent pour résoudre le problème
Dans quelle partie rencontrez-vous des problèmes? Obtenir les fichiers des archives ZIP? Obtenir le contenu des fichiers? convertir en objets XML? Obtenir les deux propriétés que vous voulez? Exporter vers la CSV? ////// Vous n'avez pas posé de question ... [ Grin i>]