有一个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;。如果没有在我的代码中进行类型检查,我该怎么做?
答案 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])
}
你可以尝试这个剪辑