如何使用小写值添加XML布尔属性

时间:2016-08-12 11:42:55

标签: powershell

有一个powershell代码:

$source = @{ Param1 = $true; Param2 = "SomeString"; Param3 = 51 }

[System.XML.XMLDocument]$document = New-Object System.XML.XMLDocument
[System.XML.XMLElement]$rootElement = $document.CreateElement("Params")

foreach($key in $source.Keys)
{
   [System.XML.XMLElement]$elem = $document.CreateElement("Param")

   $elem.SetAttribute("Name", $key)
   $elem.SetAttribute("Value", $source[$key])

   $rootElement.appendChild($elem)
}

但是在结果XML中我有:

<Params>
  <Param Name="Param1" Value="True" />
  ...
<Params>

&#34;真&#34; - 与XMl标准不兼容。我期待小写&#34;真&#34;。如果没有在我的代码中进行类型检查,我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用适用于字符串的ToLower()方法,因此首先将值转换为字符串:

$elem.SetAttribute("Value", "$($source[$key])".ToLower())

"$($source[$key])"确保不存在的属性将被正确转换为空字符串,以及其他类型(如Boolean)将被字符串化。

答案 1 :(得分:0)

如果您不想进行类型检查,可以使用try / catch转义以查看转换是否成功。

Try
{
    $elem.SetAttribute("Value", $source[$key].ToLower())
}
Catch
{
    # No String
    $elem.SetAttribute("Value", $source[$key])
}

你可以尝试这个剪辑