【发布时间】:2018-01-06 13:43:43
【问题描述】:
我目前正在尝试创建一个电话簿 xml 生成器,我们可以使用它来轻松地发送到 FTP 服务器并进行访问。
目前我有以下 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 文件中的每个值创建单独的元素标签?
【问题讨论】:
-
请编辑问题并添加示例输入数据。
标签: xml powershell csv foreach