簡體   English   中英

RegEx應該以CDATA或屬性的形式存儲在XML中嗎?

[英]Should RegEx be stored in XML as CDATA or as Attributes?

我試圖在XML文件中將RegEx作為屬性輸出。

問題在於XML輸出中生成的RegEx與我在數據庫中生成的RegEx不同:

-- database
[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@([a-z0-9_-]+\.)+(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|[a-z]{2})

-- generated
[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@([a-z0-9_-]+\.)+(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|[a-z]{2})

我應該將RegEx保存為<![CDATA[ regex ]]>還是這只是xml文件的默認行為(對某些字符進行編碼,並在我讀回時自動對其進行解碼)?

這是我必須生成元素的代碼:

XElement attr =
    new XElement("Attribute",
        new XAttribute("RegEx", item.RegularExpression)
    );

這就是它產生的:

<Attribute RegEx="[a-z0-9!#$%&amp;amp;&amp;apos;*+\/=?^_`{|}~-]+(\.[a-z0-9!#$%&amp;amp;&amp;apos;*+\/=?^_`{|}~-]+)*@([a-z0-9_-]+\.)+(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|[a-z]{2})" />

問題在於數據庫中的正則表達式已經在使用XML轉義,並且在將其復制到XML文件時,您已經添加了另一層轉義,因此&apos; 已成為&amp;apos;

有兩種轉義特殊字符的方法,您可以將&變成&amp; 就像這里所做的一樣,也可以將其包裝在CDATA中。 在這種情況下,您既不想執行任何操作,因為它已經被轉義。

我不熟悉link-to-xml,所以我不知道如何在該環境中正確執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM