XMLファイル内のテキストをPowerShellを使って再帰的に置き換えています。スクリプトは正常に動作しています。ただし、XMLファイルにはファイルパスがあり、置き換えてはいけません。 XMLファイルはXMLファイルの条件付き置換
<title>web site</title>
<subtitle>web-site</subtitle>
<path>c:/web site/website.xml</path>
を持っている場合、これは現在、例えば
if ($content -match ' web site | web-site ') {
$content -replace ' web site ',' New Site ' -replace ' web-site ',' New Site ' |
Out-File $file.FullName -Encoding utf8
を使用しているスクリプトが期待される出力は以下のようになるはずです。ファイルパス内の一致するテキストは無視する必要があります。 /web site/
または/web-site.xml
の間に文字列を無視する条件を追加するにはどうすればよいですか?ここで
<title>New Site</title>
<subtitle>New Site</subtitle>
<path>c:/web site/website.xml</path>
@Ansgar、それはあまりにも似たテキストの前後にスペースを持つことになります発生がありますmklement '新しいウェブサイト description>' thats/regexで/ text /を無視するためのクイックフィックスがあるかどうかを知りたかった理由私はこのためにquickfix foxを持っていますか、XMLの解析でこれを処理するためのリードを教えてください。 –
user2628187
@ user2628187:私の更新を見てください。 Ansgarの答えは特に 'title'と' subtitle'要素のみを対象としていますので、明示的に要素名のリストを使用しない限り、そのまま動作すると期待します。 – mklement0