2014-10-29 53 views
0

如何創建一個正則表達式,使用正則表達式對所有左尖括號<&lt;進行編碼。正則表達式需要忽略xml標記中使用的所有<>符號。正則表達式用於編碼尖括號,但忽略xml標記中使用的括號

EG:

<test> test < test </test> 

應轉換爲

<test> test &lt; test </test> 

因此Im基本上試圖避免編碼具有關閉右尖括號所有<

注意:我注意到XMLDocument.LoadXml(string)方法已經編碼了所有>,它們不是xml標記中使用的左右角括號對的組成部分。所以即時通訊不關心編碼這些尖括號

+1

因此,您收到的格式錯誤的XML作爲字符串輸入,並不能改變它呢? – 2014-10-29 12:34:47

+1

@AlexK。我的想法確切。我們似乎在這裏有一個[XY問題](http://meta.stackoverflow.com/q/66377/136323) - 而不是修復無效的輸入,這將防止發生無效輸入更有意義。 – 2014-10-29 12:36:51

+0

我想避免像這樣的情況:XMLDocument.LoadXml(@「」); – user2182790 2014-10-29 12:42:19

回答

0

任何正則表達式的解決方案可能是不可靠的,因爲格式錯誤的輸入可能是不規則的定義。一個快速和骯髒的正則表達式匹配只有一個<如果最近的尖括號不是一個右括號是

<(?![^<>]*>) 

,但我能想象的各種情況(註釋,CDATA節,在屬性值的字符串),其中這個平凡邏輯可能會失敗。

測試它live on regex101.com

相關問題