如何向xmlserializer添加特定的转义字符?

时间:2014-10-03 20:21:16

标签: c# xml xml-serialization

我有一个方法将对象序列化为xml并返回字符串:

public static string SerializeType<T>(T item)
    {
        var serializer = new XmlSerializer(typeof(T));
        var builder = new StringBuilder();
        var settings = new XmlWriterSettings();
        settings.OmitXmlDeclaration = true;
        using (var stringWriter = XmlWriter.Create(builder, settings))
        {
            serializer.Serialize(stringWriter, item);
            return builder.ToString();
        }
    }

但是,它并没有从我传入的对象中删除字符串中的所有保留字符.Microsoft将Reserved Characters列为&lt;&gt;&amp;%但是当我输入带有“abc&amp; cd%”的项目时d“字符串字段,它在没有分号前面的空格的情况下吐出”a&amp; lt; ab&amp; gt; bc&amp; amp; cd%d“。 %未被转义。如何为百分比添加正确的转义序列?当我将它发送到客户端的应用程序时,%会导致错误。该页面上列出的转义可以解决问题。

1 个答案:

答案 0 :(得分:1)

%实际上并不是XML中的保留字符。您所引用的文档适用于SQL Server,并且表中有一个小注释:

  

Notification Services XML词汇表保留用于表示参数的百分号(%)。

但您不应期望XmlSerializer(或任何其他通用XML库)为您逃脱%。除非您使用&#34; Notification Services XML&#34;我不希望这是一个问题。