2010-08-02 87 views
1

我試圖建立的情況下,可能會發生一個XML格式的正則表達式包括XML中的正則表達式?

我知道,XML解析器會抱怨幾個鍵值(即<和&),並從我個人理解,屬性可以不支持CDATA標籤。

但是,由於在.net中,lookbehind使用了<這個字符,所以事情變得更加困難。

處理這個問題的最佳方法是什麼? 我曾考慮將這些格式設置爲首先使用的html格式,並在使用時對它們進行解碼。似乎它會工作,但希望有更聰明的事情。

除了格式化爲html然後解碼之外,還有更多巧妙的方法嗎?

回答

1

爲什麼不把它們放在元素中?要麼正確編碼它們,要麼將它們放入CDATA標籤中。如果您使用任何.NET XML API而不是字符串操作,那麼.NET將爲您執行編碼。

+0

我心CDATA爲此標籤。保持XML清晰。 – 2010-08-02 19:32:50

0

「將它們格式化爲HTML」不是你所要做的。作爲XML要求你會被引用的字符:「* < &無所謂」

<something regex=".*&lt;&amp;whatever">...</something> 

當您解析這與XML解析器,正則表達式屬性會回來的,你不需要做任何解碼。 XML解析器知道如何處理這些實體。

當然,這可能是混合正則表達式和XML,並有一個可讀的結果無論如何是一個挑戰......

0

System.Web.HttpUtility.HtmlAttributeEncode()功能就可以了你,如果使用的元素或CDATA是不是一種選擇。