【发布时间】:2013-12-02 22:36:19
【问题描述】:
我正在尝试创建一些 XML,我正在使用 XML 命令创建目录结构。目录深度(如下图)是可变的。
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles" />
<Directory Id="subdir1" Name="subdir1">
<Directory Id="subdir2" Name="subdir2">
<Directory Id="INSTALLDIR" Name="$(var.Directory)">
Powershell函数代码是这样的。我传入了三个变量,$Id、$Name 和一个 INT $i。 $XMLNS 在 $script: 级别定义。
function WriteDirectory {
Param(
[Parameter(Mandatory = $true)][string]$Id,
[Parameter(Mandatory = $true)][string]$Name,
[Parameter(Mandatory = $true)][int]$NumDirectories
)
$Directories = $null
for ($i = 0; $i -lt $NumDirectories; $i++) {
$Directories += "Directory."
}
# Trim the trailing dot
[string]$Directories = $Directories.SubString(0,$Directories.Length-1)
$NewDirectory = $XML.CreateElement('Directory', $XMLNS)
$NewDirectory.SetAttribute('Id', $Id)
$NewDirectory.SetAttribute('Name', $Name)
$XML.Wix.Product.$Directories.AppendChild($NewDirectory) # This is the problem code
}
Powershell 不喜欢将字符串作为对象的一部分。 $i 可能高达 7,所以最后一个命令基本上是,如果 $i 是 7:
$XML.Wix.Product.Directory.Directory.Directory.Directory.Directory.Directory.Directory.AppendChild($NewDirectory)
我怎样才能轻松地形成最后一个本质上是动态的 XML 命令?
【问题讨论】:
标签: xml variables powershell wix