Har*_*vey 4 xml powershell xpath
我有一个XML文档,如下所示:
<Task>
<Settings>
</Settings>
<Sub>foo</Sub>
<Body>bar</Body>
</Task>
Run Code Online (Sandbox Code Playgroud)
从PowerShell我可以愉快地使用以下内容获取'Sub'和'Body'的内容:
$Body = $XMLFile.Task.Body
Run Code Online (Sandbox Code Playgroud)
但我试图完全删除'Sub'和'Body'标签,因此XML将是:
<Task>
<Settings>
</Settings>
</Task>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多东西,包括:
.RemoveChild()方法(抛出与Object引用相关的exeption)甚至将文件作为文本文件打开并尝试:
Get-Content $_.FullName -notmatch "<Sub>" | out-file $_.FullName
^^这什么都不做
此外,对于此脚本应用程序,我将无法使用任何第三方模块
您可以使用它Where-Object来查找要删除的子节点,然后调用RemoveChild():
$Input = "C:\path\task.xml"
$Output = "C:\path\newtask.xml"
# Load the existing document
$Doc = [xml](Get-Content $Input)
# Specify tag names to delete and then find them
$DeleteNames = "Sub","Body"
($Doc.Task.ChildNodes |Where-Object { $DeleteNames -contains $_.Name }) | ForEach-Object {
# Remove each node from its parent
[void]$_.ParentNode.RemoveChild($_)
}
# Save the modified document
$Doc.Save($Output)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10853 次 |
| 最近记录: |