如果我想用一些字符串键(例如“foo”)从文档行中删除,我使用:
$content = Get-Content 'C:/fake.txt' | Where-Object {$_ -notmatch 'foo'}
$content | Out-File 'C:/fake.txt'
但现在我已经提交了这个计划:
...
<data name="BLABLA" xml:space="preserve">
<value>some data here</value>
</data>
...
<data name="BLABLA22" xml:space="preserve">
<value>some data</value>
<comment>some comment</comment>
</data>
我需要删除关键字“BLABLA”这三行
<data name="BLABLA" xml:space="preserve">
<value>some data here</value>
</data>
对于关键的“BLABLA2”这四行
<data name="BLABLA22" xml:space="preserve">
<value>some data</value>
<comment>some comment</comment>
</data>
我怎样才能通过PowerShell做到这一点?
答案 0 :(得分:4)
如果要删除整个节点,那么以下内容应该可以帮到您。
# load the file into xml
[xml]$dom = gc file.xml
# find the node
$nod = $dom.SelectSingleNode("/root/data[@name='BLABLA']")
# remove the node from the parent
$nod.ParentNode.RemoveChild($nod)
# save the xml
$dom.save("file.xml")
我认为您的数据看起来有点像这样:
<root>
<data name="BLABLA" xml:space="preserve">
<value>some data here</value>
</data>
<data name="BLABLA22" xml:space="preserve">
<value>some data</value>
<comment>some comment</comment>
</data>
</root>