2017-07-31 40 views
0

我目前正在嘗試創建一個電話簿xml生成器,我們可以使用它輕鬆發送到FTP服務器並進行訪問。Powershell - 使用CSV數據在ForEach循環中分離元素

目前我有以下Powershell腳本;

---------- 
$csvPath = "C:\Users\nwong\Desktop\IDN_EXT.csv" 

[System.Xml.XmlDocument] $xmlDocument = New-Object System.Xml.XmlDocument 

$directory = $xmlDocument.CreateElement("Directory") 

$title_tag = read-host "Enter a title for your phonebook.." 

$title = $xmlDocument.CreateElement("Title") 

$menu_item = $xmlDocument.CreateElement("MenuItem") 

$prompt = $xmlDocument.CreateElement("Prompt") 

$ext = $xmlDocument.CreateElement("URI") 

$xmlDocument.AppendChild($directory) 

$directory.AppendChild($title) 

$title.AppendChild($xmlDocument.CreateTextNode($title_tag)) 

ForEach ($e in (Import-CSV -Path $csvPath)) { 
    $directory.AppendChild($menu_item) 
    $menu_item.AppendChild($prompt) 
    $prompt.AppendChild($xmlDocument.CreateTextNode($e.Name)) 
    $menu_item.AppendChild($ext) 
    $ext.AppendChild($xmlDocument.CreateTextNode($e.Extension)) 
} 


$xmlDocument.Save("C:\Users\nwong\Desktop\test.xml") 

---------- 

目前,該腳本生成以下XML文件

---------- 
<Directory> 
    <Title>Test</Title> 
    <MenuItem> 
     <Prompt>OperatorKate ShanahanAtiq RAthman AIrfani DFelicity 
     PDeswanto</Prompt> 
     <URI>50005001500250035004500550069</URI> 
    </MenuItem> 
</Directory> 
--------- 

我在尋找的結果是這樣的,因此,在foreach循環中找到的每個值創建的元素標籤;

--------- 

<MenuItem> 
    <Prompt>Operator</Prompt> 
    <URI>625000</URI> 
</MenuItem> 
<MenuItem> 
    <Prompt>Kate Shanahan</Prompt> 
    <URI>625001</URI> 
</MenuItem> 
<MenuItem> 
    <Prompt>Atiq R.</Prompt> 
    <URI>625002</URI> 
</MenuItem> 
<MenuItem> 
    <Prompt>Athman A.</Prompt> 
    <URI>625003</URI> 
</MenuItem>` 

---------- 

我應該有另一種循環,產生相同的ForEach循環和分裂每個單獨的值或者是有沒有在CSV文件的每個值創建單獨的元素標籤更簡單的方法?

+0

請編輯的問題,並添加樣本輸入數據。 – vonPryz

回答

0

呦必須創建節點進入你的循環,試試這個:

$csvPath = "C:\Users\nwong\Desktop\IDN_EXT.csv" 
$xmlPath = "C:\Users\nwong\Desktop\test.xml" 

$title_tag = read-host "Enter a title for your phonebook.." 

[System.Xml.XmlDocument] $xmlDocument = New-Object System.Xml.XmlDocument 

$directory = $xmlDocument.CreateElement("Directory") 
$xmlDocument.AppendChild($directory) 

$title = $xmlDocument.CreateElement("Title") 
$title.AppendChild($xmlDocument.CreateTextNode($title_tag)) 
$directory.AppendChild($title) 

Import-CSV -Path $csvPath | %{ 

    $menu_item = $xmlDocument.CreateElement("MenuItem") 

    $prompt = $xmlDocument.CreateElement("Prompt") 
    $prompt.AppendChild($xmlDocument.CreateTextNode($_.Name)) 
    $menu_item.AppendChild($prompt) 

    $ext = $xmlDocument.CreateElement("URI") 
    $ext.AppendChild($xmlDocument.CreateTextNode($_.Extension)) 
    $menu_item.AppendChild($ext) 

    $directory.AppendChild($menu_item) 
} 

$xmlDocument.Save($xmlPath) 
+0

工作完美,非常感謝:) – Wongo

相關問題