1

如果我想用一些字符串键(例如“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做到这一点?

4

1 回答 1

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>
于 2013-09-19T21:17:15.007 回答