XML npp 検索と置換

XML npp 検索と置換

私が xml と npp について初心者であることを念頭に置いてください。

数千のレコードを含む大きな XML ファイルがあり、他のプログラムで動作するように行を変更する必要があります。

フォーマットの変換はほとんど完了しましたが、問題が発生しました。

私の XML は現在次のようになっています:

</Value>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</Value>
</DPR>

そして私が欲しいもの:

<DPR>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</description>
</DPR>

問題は、</Value>スタンドアロンの文字列であるかどうかに応じて、2 つの異なるものに置き換えることです。2 つ目の問題は、行の一部を置き換えて残りを保持することです。保持したい部分の文字数が行ごとに異なる場合です。

あらゆる助けを心から感謝します!

答え1

行内に単独で存在する場合は、</Valueに置き換えます。</DPR>

検索対象:^ *</Value>

と置換する:</DPR>

検索モード: 正規表現

その後は、文字列と一緒になっているもの以外に のインスタンスは存在しないはずな</Value>ので、それらを置き換えるのは簡単なはずです。しかし、完全性のために...

行内に[somestringhere]</Value->が単独で存在する場合の置き換え:[somestringhere]</description>

検索対象:^(<description>.+?)</Value>

と置換する:$1</description>

検索モード: 正規表現

上記は^行の先頭を表し、*空白が存在するかどうかを意味し、.+?その後の文字列の最初の出現までの任意の文字を意味します(正規表現の詳細についてはここを参照してください)であり、$1置換文字列内の部分は、ソース データ内の括弧で囲まれた一致する部分に置き換えられます。

答え2

最も簡単なのは、Perl で正規表現を使用することです。

perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt

関連情報