[英]Avoid XML Escape Double Quote
我目前正在嘗試將 class 序列化為 XML 以發布到 php Z2567A5EC9705EB7AC2DZ98403 服務。
每當我使用 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 聲明,但是我遇到了兩個新問題。
我得到\r\n
換行,並且我已經轉義了雙引號,例如ReturnResultsOnly=\"false\" Monitoring=\"false\"
端點也無法處理。
我想問的是,有沒有人可以告訴我如何更改 XmlWriterSetting 以省略 XML 聲明,避免\r\n
並避免轉義雙引號\"
提前感謝您的建議。
西蒙
嘗試以下設置
settings.NewLineHandling = NewLineHandling.None;
settings.CheckCharacters = false;
private void SerializeClassToString(GetRiskReport value)
{
var emptyNS = new XmlSerializerNamespaces(new[]{XmlQualifiedName.Empty});
var ser = new XmlSerializer(value.GetType());
var settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
string path = 'your_file_path_here'
if (File.Exists(path)) File.Delete(path);
FileStream stream = File.Create(path);
using (var writer = XmlWriter.Create(stream, settings))
{
ser.Serialize(writer, value, emptyNS);
return;
}
}
沒有辦法避免 ms 錯誤或他們關於 xmlserializing 的內在規范。使用文件流 object 更容易和更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.