2017-12-01 14 views
0

私は、2つの変数 'c​​ode'と 'description'を抽出して、このテンプレートに書き込むスクリプトを作成しようとしています。CSVからファイルにインポート

<CodeDescriptions> 
    <CodeDescription> 
    <Code>*code*</Code> 
    <Description>*description*</Description> 
    </CodeDescription> 
</CodeDescriptions> 

変数のセットごとに、テンプレートを書き込んで変数を挿入することがわかります。

私のCSVファイルには、これまでのところ、この

code,description 
0001,first 
0002,second 
0003,third 

私のコードのようになります。私は私はまだ私の目標は1から2つの変数を抽出することで、コードに精通取得しています言ったように

$DB = Import-Csv $PSScriptRoot\Variables.csv 

Set-Content $PSScriptRoot\file.txt 

    foreach ($Entry in $DB) { 
     $First = $Entry.First 
     $Second = $Entry.Second 

     # Echo values to verify result (test purposes only) 
     Write-Host $First 
     Write-Host $Second 

     # Write template to file 
     $var= 
     "<CodeDescriptions> 
      <CodeDescription> 
       <Code>*code*</Code> 
       <Description>*description*</Description> 
      </CodeDescription> 
      </CodeDescriptions>" 

     Add-Content $PSScriptRoot\file.txt $var 

     # replace inserts with correct variables 
    } 

一度に1行ずつ。次に、テンプレートを正しい変数でファイルに書き込み、すべての変数が入力されるまで繰り返します。

完成した製品は、次の2つの問題を抱えている。この

<CodeDescriptions> 
    <CodeDescription> 
    <Code>0001</Code> 
    <Description>first</Description> 
    </CodeDescription> 
</CodeDescriptions> 
<CodeDescriptions> 
    <CodeDescription> 
    <Code>0002</Code> 
    <Description>second</Description> 
    </CodeDescription> 
</CodeDescriptions> 
<CodeDescriptions> 
    <CodeDescription> 
    <Code>0003</Code> 
    <Description>third</Description> 
    </CodeDescription> 
</CodeDescriptions> 
+0

したがって、csvから変数を抽出してから、それらをxmlとして出力しますか?なぜあなたは2つの変数( '$ First'と' $ Second')に同じ値( '$ Entry')を代入するのですか?なぜサブ式(' $() ')を使用しているのですか? – deFreitas

+0

')それは?あなたのCSVの構造は何ですか?あなたはどこのXMLを読んでいますか(私はあなたのテンプレートだと思います)? –

+0

私は説明にもっと追加するように更新しました。コードを正しく更新しようとします –

答えて

1

ようになります。

foreach ($Entry in $DB) { 
    $First = $Entry.First 
    $Second = $Entry.Second 

次のように起動する必要があります。このように始まり、あなたのforeachループがよう

まず、インポート、CSVは、最初の行のヘッダーに基づいて、プロパティの名前を定義します

foreach ($Entry in $DB) { 
    $Code = $Entry.Code 
    $Description = $Entry.Description 

次に、あなたがあなたの$var$Description$Code*description**code*を置き換える(または仲介変数をスキップしてちょうど記述する必要があります。

Add-Content $PSScriptRoot\file.txt @" 
<CodeDescriptions> 
    <CodeDescription> 
     <Code>$Code</Code> 
     <Description>$Description</Description> 
    </CodeDescription> 
</CodeDescriptions> 
"@ 
関連する問題