1. ホーム
  2. regex

[解決済み] ColdFusion を使用して XML 文字列から余分なホワイトスペースをすべて削除するにはどうすればよいですか?

2022-02-18 19:48:48

質問内容

クライアントから次のような形式のXML文字列を受け取った。

<root>
   <result success="1"/>
   <userID>12345</userID>
   <classID>56543</classID>
</root>

この文字列を以下のように圧縮したいのですが......。

<root><result success="1"/><userID>12345</userID><classID>56543</classID></root>

つまり、タグの内部を除いて、すべての空白が削除されます(したがって、"result" と "success" の間にはまだスペースが存在することになります)。

私はこれまで replace ステートメントを使用して改行やキャリッジリターンなどを削除することができますが、タグ内のスペースを無視してスペースを削除することができません。正規表現などを使って実現する方法はないでしょうか?

どのように解決するのですか?

以下のようにすると、タグ内にないスペースにマッチします。

[\s]+(?![^><]*>)

オア

[\s]+(?![^><]*(?:>|<\/))

マッチしたスペースを空文字列に置き換えるだけです。

DEMO

Edit Starts Here

コメントより - ColdFusionのコンテキストでは、次のように動作します...

strClean = REReplace(strOriginal,"[\s]+(?![^><]*(?:>|<\/))","","All");