2014-09-10 43 views
1

我收到來自客戶端的XML字符串類似下面的格式...如何使用ColdFusion從XML字符串中刪除所有多餘的空格?

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

我需要這個字符串壓縮成以下...

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

因此,所有的除了標籤內部以外,空格被刪除(所以空格在「結果」和「成功」之間仍然存在)。

我已經使用replace語句刪除換行符,回車等,但我不能刪除空格,而忽略標籤內的空間。有沒有辦法使用正則表達式或其他方法來實現這一點?

回答

4

以下至REGx將匹配哪些不是在標籤內的空間,

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

OR

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

只是一個空字符串替換匹配的空間。

DEMO

編輯從這裏開始

從評論 - ColdFusion中的它的工作原理是這樣的背景下...

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

工作就像一個魅力。謝謝! – unclesol 2014-09-10 17:51:17

+0

如果任何人有興趣,在ColdFusion的情況下,它的工作原理是這樣的... strClean = REReplace(strOriginal,「[\ s] +(?![^><]*(?:> | <\ /))」,「」, 「所有」); – unclesol 2014-09-10 17:51:56

+0

我在JavaScript中測試了這些正則表達式,它們不能正常工作。 '[\ s] +(?![^><]*>)'切割不應該的空格(來自文本內部)。另一方面''\ s] +(?![^><]*(?:> | <\ /))'錯過一些空格。 – 2018-02-22 12:20:42

0

如何簡單的正則表達式:>\s+?<和替換與><。作爲接受答案的獎勵,這將保留葉/終端元素中的空白。

0

最簡單,工作溶液我看到的是,以取代近角括號的外側的所有空格:

  • >\s+>通過,並
  • \s+<通過<

在ColdFusion的,應該是這樣的:

str = REReplace(str, ">\s+", ">", "All"); 
str = REReplace(str, "\s+<", "<", "All"); 
相關問題