【问题标题】:How do you handle escaping invalid attribute characters?你如何处理转义无效的属性字符?
【发布时间】:2008-10-28 17:32:16
【问题描述】:

我必须启动并运行一个快速而肮脏的配置编辑器。流程是这样的:

配置(服务器上的 POCO)-> Xml(序列化,作为 XElements 传输到网站)-> 文本(在网页中就地编辑) (进行更改)
文本编辑器-> XElement(解析提交的表单值)-> 配置

问题在于序列化不会转义任何字符串。但是当我尝试将其解析回 xml 时,我无法弄清楚如何将字符串放入 XElement 而不引发异常。

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

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

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

我不知道如何指示序列化程序转义字符,我也不知道如何让解析器在返回时忽略它们。

我能看到的唯一方法是对 XML 做一些非常粗略的正则表达式替换,我几乎完全可以保证在某些极端情况下会搞砸。

还有其他方法吗?

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    好的,替换我的答案 - 我想我知道你现在从哪里来了。

    您的网页以如下来源结束:

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

    甚至

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 2012-08-03
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 2013-03-16
      • 2019-03-22
      相关资源
      最近更新 更多