在PowerShell中编辑标签

时间:2013-10-01 16:50:32

标签: xml powershell

这是我第一次使用PowerShell而我无法解决我的问题:/

我有以下xml文件:

<mockup>
 <controls>
  <control>
   <controlProperties>
    <text>Löschen</<text>
   </controlProperties>
  </control>
  <control>
   <controlProperties/>
  </control>
  <control>
   <controlProperties>
    <text>Abbrechen</text>
   </controlProperties>
  </control>
 </controls>
</mockup>

我有100个这样的文件,里面有大约100个文本标签。我想翻译那些文本标签。因此,我浏览所有文件,浏览所有文本标签并检查值是否为“Löschen”并将其更改为“删除”。

我已经尝试了很多东西(没有xml它已经可以工作了,但如果我不将它限制在文本文件中,它会弄乱我的xml文件。

我的最后一次尝试就是这个:

$file = gi *.bmml
$pattern = 'Löschen'
$xml = [xml](gc $file)
$xml 
Foreach ($control in $_.mockup.controls.control) |
   Foreach {$control.controlproperties.text.Replace $pattern "Delete"
$xml.Save($file.Fullname)

我很感激你的帮助,我真的很累,现在就去睡觉吧。也许有人可以为我的案例提供一个很好的xml处理教程(我的案例有1000个,但没有)。

非常感谢!

1 个答案:

答案 0 :(得分:1)

这一行:

Foreach ($control in $_.mockup.controls.control)

应该是:

Foreach ($control in $xml.mockup.controls.control)

您采取的替换文本的方法也不起作用。试试这个:

Select-Xml $xml -XPath '//text' | Foreach {$_.Node.InnerText = 'Delete'}
$xml.Save("c:\somepath.xml")