避免 XML 转义双引号

Avoid XML Escape Double Quote

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

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

因此,我使用 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 并避免转义双引号 \"

提前感谢您的建议。

西蒙

尝试使用以下设置

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