如何处理转义无效的属性字符?

时间:2008-10-28 17:32:17

标签: c# xml

我必须启动并运行快速而脏的配置编辑器。流程如下:

配置(服务器上的POCO) - > Xml(序列化,作为XElements转移到网站) - >文字(在网页中编辑) (做出改变)
文本编辑器 - > XElement(解析提交的表单值) - >构造

问题是序列化不会转义任何字符串。但是当我尝试将其解析回xml时,我无法弄清楚如何在不抛出异常的情况下将字符串转换为XElement。

例如,假设我有一个具有正则表达式的对象。这将是编辑器中的片段:

<Validator Expression="[^<]" />

但是,在回程中,我无法将其恢复为XElement格式,因为该属性具有非法字符。

我无法弄清楚如何指示序列化程序转义字符,我无法弄清楚如何在返回途中让解析器忽略它们。

我能看到的唯一方法是对XML进行一些非常粗略的正则表达式替换,我几乎可以完全保证在某些角落或其他情况下搞砸了。

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

好的,取代我的答案 - 我想我知道你现在要来的地方。

您的网页最终会有以下来源:

<textarea>
    <Validator Expression="[^<;]"/>
</textarea>

甚至

<textarea>
    &lt;Validator Expression="[^&lt;]"/&gt;
</textarea>

您需要对属性中的值进行双重编码,以使它们在textarea中显示为编码值:

<textarea>
    &lt;Validator Expression="[^&amp;lt;]"/&gt;
</textarea>