0

这是我第一次使用 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 个,但没有一个)。

非常感谢!

4

1 回答 1

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")
于 2013-10-01T18:12:47.243 回答