PowerShell - XmlElement 转义字符串

PowerShell - XmlElement to Escaped String

在 PS 内,我正在执行一个 API 调用,它以 xml 格式返回数据:

IsPublic IsSerial Name             BaseType
-------- -------- ----             --------
True     False    XmlElement       System.Xml.XmlLinkedNode

然后我使用 PS 到 modify/add 一个节点,它的值使用类似的东西:

$resultAdminGet.Parent.Node.SubNode.Element= "<value>"

一切正常,当我用修改后的值调用子节点时 returns。

我现在遇到的问题是我需要将此 SubNode XmlElement 格式化为嵌套在 Parent 中的转义 xml 字符串,以便我有一个类似于此的值以便使用 API 进行实际更新:

<Parent>
    <Version>1.7</Version>
    <Context>(omitted )</Context>
    <MsgType>(omitted )</MsgType>
    <Type>43</Type>
    <Name>Test</Name>
    <GenericNode>&lt;GenericNode>**((ESCAPED STRING HERE))**/GenericNode></GenericNode>
</Parent>

注意 - 我的 explained/omitted 敏感数据可能很糟糕,其中一些术语可能已关闭,但通过使用 $resultAdminGet.Parent.Node.SubNode 这些都是我需要转义的 xml 值。

任何 help/ideas 如何实现?

谢谢!

在您的示例中,您可以使用 SecurityElement.Escape 方法将无效的 XML 字符替换为 XML 等价字符。

[System.Security.SecurityElement]::Escape($resultAdminGet.Parent.Node.SubNode.InnerXml)