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><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)
在 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><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)