.net - xmlreader 换行符\n 而不是\r\n

标签 .net newline xmlreader

当我使用 XmlReader.ReadOuterXml() 时,元素由\n 而不是\r\n 分隔。 因此,例如,如果我有 XmlDocument 表示

<A>
<B>
</B>
</A>

我明白了

<A>\n<B>\n</B>\n</A>

是否有指定换行符的选项? XmlWriterSettings 有它,但 XmlReader 似乎没有这个。

这是我读取 xml 的代码。请注意,XmlWriterSettings 默认情况下具有 NewLineHandling = Replace

XmlDocument xmlDocument = <Generate some XmlDocument>
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;

// Use a memory stream because it accepts UTF8 characters.  If we use a 
// string builder the XML will be UTF16.
using (MemoryStream memStream = new MemoryStream())
{
    using (XmlWriter xmlWriter = XmlWriter.Create(memStream, settings))
    {
        xmlDocument.Save(xmlWriter);
    }

    //Set the pointer back to the beginning of the stream to be read
    memStream.Position = 0;
    using (XmlReader reader = XmlReader.Create(memStream))
    {
        reader.Read();
        string header = reader.Value;
        reader.MoveToContent();
        return "<?xml " + header + " ?>" + Environment.NewLine + reader.ReadOuterXml();
    }
}

最佳答案

XmlReader 会自动将 \r\n\ 规范化为 \n。尽管这在 Windows 上看起来不常见,但实际上是 XML 规范 ( http://www.w3.org/TR/2008/REC-xml-20081126/#sec-line-ends ) 所要求的。

您可以执行String.Replace:

string s = reader.ReadOuterXml().Replace("\n", "\r\n");

关于.net - xmlreader 换行符\n 而不是\r\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1793908/

相关文章:

c# - 在不同的 .NET 框架之间共享记录器

c# - 引用类型附加属性 (DependencyProperty) 何时发布?

c# - 风格上的差异 : IDictionary vs Dictionary

java - 如何将换行符从我的 Servlet 传递给 JavaScript?

c# - 在 C# 中解析 XML 文件

c# - XmlReader.ReadSubTree() 始终返回 NONE

C# HttpWebRequest - 如何在不下载的情况下区分 HTML 和 XML 页面?

Java 相当于 GC.SuppressFinalize

powershell - 在Powershell脚本中添加换行符(换行符)

java - 如何在Java中的复选框描述中插入新行字符?