0

Powershell スクリプトを使用して、& ' - £ などの xml ファイルからのいくつかの厄介な文字の置換を自動化しています。

私が持っているスクリプトはこれらの文字に対してうまく機能しますが、二重引用符文字 " も削除したいのですが、それが xml 属性 (残念ながら二重引用符で囲まれている) 内で使用されている場合に限ります。 xml ファイルを変更すると、属性が正常に機能しなくなります。

私のPowershellスクリプトは以下の通りです:

(Get-Content C:\test\communication.xml) | 
Foreach-Object {$_ -replace "&", "+" -replace "£", "GBP" -replace "'", "" -replace "–", " "} |
Set-Content C:\test\communication.xml

私ができるようにしたいのは、以下のように二重引用符のペアで囲まれている XML 属性の一部を構成する二重引用符のみを削除することです。Powershell は各行を個別のオブジェクトとして見ることを知っているので、おそらく条件を使用することで、これは非常に簡単になるのではないでしょうか?

XML ファイルの例を以下に示します。

<?xml version="1.0" encoding="UTF-8"?>
<Portal> 
<communication updates="Text data with no double quotes in the attribute" />
<communication updates="Text data that "includes" double quotes within the double quotes for the attribute" />
</Portal>

上記の例では、単語をすぐに囲む二重引用符のみを削除したいと思いますが、テキストの左側または単語属性の右側にある二重引用符は削除しません。XML 属性に使用される単語は定期的に変更されますが、左の二重引用符は常に = 記号のすぐ右にあり、右の二重引用符は常にスペースとスラッシュの組み合わせの左側にあります / Thanks

4

1 に答える 1