Asp.net 正则表达式应该作为CDATA或属性存储在XML中吗?

Asp.net 正则表达式应该作为CDATA或属性存储在XML中吗?,asp.net,xml,regex,linq-to-xml,Asp.net,Xml,Regex,Linq To Xml,我试图在xml文件中将RegEx作为属性输出 问题在于XML输出中生成的正则表达式与数据库中的正则表达式不同: -- 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

我试图在xml文件中将
RegEx
作为属性输出

问题在于XML输出中生成的正则表达式与数据库中的正则表达式不同:

-- 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})
我应该将正则表达式保存为
,还是这只是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已成为
&;载脂蛋白

有两种转义特殊字符的方法,您可以将
&
转换为
&按此处完成,或者您可以将其包装在CDATA中。在这种情况下,您也不想这样做,因为它已经被转义了


我不熟悉xml链接,因此我不知道如何在这种环境中正确执行此操作。

您想要导出正则表达式的事实表明,它最终将被导入并执行。请注意,这是一个潜在的重做漏洞:我对此一无所知,我现在理解了这个问题。为了安全起见,我会将它们保存在CDATA中,并且根本不会改变正则表达式模式。我很高兴从一位XML资深人士那里得到答案:)