【发布时间】:2023-01-24 01:24:22
【问题描述】:
我知道已经有关于此的问题:Why XElement Value property changing \r\n to \n?,但这里的问题是XElement将\r\n转换为\n。
我的情况有点不同,我将 \n 存储在我的 XML 中,但是如果我将 XML 保存到文件或文件流中,我会再次返回 \r\n(仅在文件中)。读取它返回\n。
附件是用于查看结果的小 sn-p 代码。我可以理解由于https://www.w3schools.com/Xml/xml_syntax.asp,\r\n在写入时被转换为\n,但我看不出为什么它被写入流或文件为\r\n。
using System.Xml.Linq;
var text = "Test1" + Environment.NewLine + "Test2" + Environment.NewLine + "Test3";
using MemoryStream stream = new();
var xmlSource = new XElement("Data", text.Replace(Environment.NewLine, "\n"));
xmlSource.Save(stream, SaveOptions.None);
stream.Position = 0;
var xmlTarget = XElement.Load(stream);
Console.WriteLine(xmlTarget.Value);
对给定的行为有一些解释吗?
【问题讨论】:
-
Save 方法会自动添加退货,您正在添加额外的退货。
-
如果您想更改该行为,您可以尝试使用采用 XmlWriter 的 Save 重载。对于 XmlWriter,您可以访问它的设置。特别是 XmlWriterSettings.NewLineHandling