Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向xmlserializer添加特定的转义字符?_C#_Xml_Xml Serialization - Fatal编程技术网

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

C# 如何向xmlserializer添加特定的转义字符?,c#,xml,xml-serialization,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.Omit

我有一个将对象序列化为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();
        }
    }
公共静态字符串序列化类型(T项)
{
var serializer=newxmlserializer(typeof(T));
var builder=新的StringBuilder();
var设置=新的XmlWriterSettings();
settings.OmitXmlDeclaration=true;
使用(var stringWriter=XmlWriter.Create(生成器,设置))
{
序列化器。序列化(stringWriter,项);
返回builder.ToString();
}
}

但是,它并没有从我传入的对象的字符串中删除所有保留字符。Microsoft将列为&%,但当我输入带有“abc&cd%d”字符串字段的项目时,它会弹出“a<;ab>;bc&;cd%d”,而不在分号前加空格。%没有逃脱。如何为百分比添加正确的转义序列?当我将%发送到客户端的应用程序时,它会导致错误。该页上列出的转义修复了问题。

%
在XML中实际上不是保留字符。您提到的文档是针对SQL server的,表下有一个小注释:

NotificationServices XML词汇表保留百分号(%)用于表示参数


但您不应该期望
XmlSerializer
(或任何其他通用XML库)为您转义
%
。除非您使用的是“Notification Services XML”,否则我不会认为这是一个问题。

我添加了更多关于为什么需要添加此字符的信息。我猜客户端的应用程序应该进行此更改/删除此缺陷,但这最终落在我身上。这个答案并没有真正回答我的问题。如果不是在序列化程序中,您建议如何处理此问题?@Bishop:客户端的应用程序是什么?为什么他们不能把它修好?如果必须的话,您可以在以后手动替换字符串中的
%
,但是您至少应该让客户机知道他们拒绝完美的XML。它是一个java servlet。让他们知道是理所当然的。他们刚刚被证明是缓慢作出改变,并已经有相当大的积压。谢谢你的帮助,乔恩。