避免XML Escape Double Quote

时间:2015-01-16 02:46:50

标签: c# .net xml

我目前正在尝试将类序列化为XML以发布到php Web服务。

每当我使用XMLSerializer进行正常的序列化时,XML声明总是出现在XML文档的第一行(类似于<?xml ....?>)。我测试了XML并且无法使其工作,因为端点不接受XML声明,我无法做任何事情。 我老实说,我不熟悉C#中的XML序列化。

因此,我使用XMLWriter执行以下操作: -

private string SerializeClassToString(GetRiskReport value)
{
    var emptyNS = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
    var ser = new XmlSerializer(value.GetType());
    var settings = new XmlWriterSettings();
    settings.OmitXmlDeclaration = true;

    using (var stream = new StringWriter())
    {
        using (var writer = XmlWriter.Create(stream, settings))
        {
            ser.Serialize(writer, value, emptyNS);
            return stream.ToString();
        }
    }
}

命名空间的结果是

<GetRiskReport FCRA=\"false\" ReturnResultsOnly=\"false\" Monitoring=\"false\">

...而且我能够省略XML声明,但是我引入了2个新问题。

我为新行获得了\r\n,并且我已经转发了双重引用,例如ReturnResultsOnly=\"false\" Monitoring=\"false\",也无法由端点处理。

我想问的是,是否有人可以告诉我如何更改XmlWriterSetting以省略XML声明,避免\r\n并避免转义双引号\"

提前感谢您的建议。

西蒙

1 个答案:

答案 0 :(得分:1)

尝试以下设置

settings.NewLineHandling = NewLineHandling.None;
settings.CheckCharacters = false;