如何在Powershell中将CData添加为XElement值?

时间:2012-09-28 15:31:29

标签: xml powershell cdata

我有一个PS脚本,可以创建一些XML并为XElements分配值。我需要将XElement的值包装在CData中。这是使用System.Xml.Linq 我试过这个:

$newNode.Element("details").Value = '<![CDATA[Traceback:'+$_.Exception.toString()+']]>'

但是当我输出xml时,它会转换'&lt;'和'&gt;'到&amp; lt和&amp; gt。

2 个答案:

答案 0 :(得分:1)

XCData类型的对象添加到元素

[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq") | Out-Null

[System.Xml.Linq.XCData] $cdata = New-Object -TypeName System.Xml.Linq.XCdata -ArgumentList "data"
[System.Xml.Linq.XElement] $element = New-Object -TypeName System.Xml.Linq.XElement -ArgumentList "test", $cdata

答案 1 :(得分:0)

尝试一下:

$cdata = $xml.CreateCDataSection($content)
$parent = $xml.GetElementsByTagName("TagName")[0]
$parent.AppendChild($cdata)