PowerShell でCSV ファイルからXML ファイルへ変換する。
Contents
コマンドを使ってインポートする
コパイロットさんの解。
PowerShellを使ってCSVファイルをXML形式に変換する方法を説明しますね。以下の手順に従ってください。
PowerShellを使ってCSVファイルをXML形式に変換する方法を説明しますね。以下の手順に従ってください。
- CSVファイルをインポート:$csvData = Import-Csv -Path “path\to\your\file.csv”
- CSVデータをXMLに変換:$xmlData = $csvData | ConvertTo-Xml -As Document
- XMLデータをファイルに保存:$xmlData.Save(“path\to\your\file.xml”)
何か他にお手伝いできることがあれば教えてくださいね。
サンプルで出力してみる。
sample.csv(変換元)
attr1,attr2
test1a, test2a
test2a, test2b
test3a, test3b
test4a, test4b
test5a, test5b
test6a, test6b
test7a, test7b
test8a, test8b
test9a, test9b
test10a,test10b
sample-out.xml(変換後)
<Objects>
<Object Type="System.Management.Automation.PSCustomObject">
<Property Name="attr1" Type="System.String">test1a</Property>
<Property Name="attr2" Type="System.String">test2a</Property>
</Object>
<Object Type="System.Management.Automation.PSCustomObject">
<Property Name="attr1" Type="System.String">test2a</Property>
<Property Name="attr2" Type="System.String">test2b</Property>
</Object>
<Object Type="System.Management.Automation.PSCustomObject">
<Property Name="attr1" Type="System.String">test3a</Property>
<Property Name="attr2" Type="System.String">test3b</Property>
</Object>
(中略)
</Object>
</Objects>
思ってたのと違うので、「foreach」でCSV の値を処理する
ちょと思ってたのと違うので、
テキストを成型するような感じでやってみた。
aaa.ps1
function aaa{
# CSVファイルのパスを設定
$csvPath = "sample.csv";
# CSVファイルを読み込む
$tests = Import-Csv -Path $csvPath;
write-output "<test>";
foreach ($test in $tests){
write-output " <test-sub>";
$String1=" <attr1>" + $test.attr1 + "</attr1>";
$String2=" <attr2>" + $test.attr2 + "</attr2>";
write-output $String1;
write-output $String2;
write-output " </test-sub>";
}
write-output "</test>";
}
aaa | Tee-Object -FilePath "output.xml";
aaa.ps1 をCSV が保存されているフォルダで実行する。
(または、CSVとXML ファイルの位置を絶対パスで定義する。)
<test>
<test-sub>
<attr1>test1a</attr1>
<attr2>test2a</attr2>
</test-sub>
<test-sub>
<attr1>test2a</attr1>
<attr2>test2b</attr2>
</test-sub>
<test-sub>
<attr1>test3a</attr1>
<attr2>test3b</attr2>
</test-sub>
<test-sub>
<attr1>test4a</attr1>
<attr2>test4b</attr2>
</test-sub>
(中略)
</test>
(Visited 8 times, 1 visits today)