【发布时间】:2012-05-30 16:14:12
【问题描述】:
我有一个类似于以下内容的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<Content>
<FileID>109F2AEA-6D9C-4127-963A-9C71D4155C5D</FileID>
<File Path="C:\test.config">
<Tag TagName="configuration">
<add Content="One" fileID="${FileID}"/>
<secondnode Content="Two" fileID="${FileID}">
<nodeinside>
<inneragain fileID="${FileID}"/>
</nodeinside>
</secondnode>
...
<diffentnode Content="Infinite" fileID="${FileID}"/>
</Tag>
</File>
</Content>
我只需要获取这个 XML 文件内容并编辑(替换任何 ${FileID} 存在的地方)如下所示的行
<add fileID="${FileID}"/>
使用下一行中“FileID”的值并将输出获取到 DataType [xml] 的变量。
<FileID>109F2AEA-6D9C-4127-963A-9C71D4155C5D</FileID>
请建议可以在 PowerShell 中完成此操作的最佳方式。
【问题讨论】:
-
我需要更改的地方有很多,这些地方也没有预先确定(只有 ${FileID} 的标识)。
-
我刚刚找到了使用以下代码的解决方法。但我仍然觉得会有更多更好的方法。
code[CmdletBinding()] 参数 ( [参数(Mandatory=$true,ValueFromPipeline=$true)] [string[]]$ReplaceFile ); [xml]$ReplaceFileContent = 获取内容 $ReplaceFile; $FileID = $ReplaceFileContent.Content.FileID; [String]$ReplaceFileContentString = 获取内容 $ReplaceFile; $newReplaceFileContentString = $ReplaceFileContentString.Replace("${FileID}", $FileID); [xml]$newReplaceFileContent = [xml]$newReplaceFileContentString;code` -
这与我在更新答案中提供的内容有何不同?
标签: xml powershell powershell-2.0