显然,VB的XML文字中的CR-LF组合会以静默方式转换为LF。
考虑以下最小例子:
Module Module1
Sub Main()
Dim x As XElement = <xml>1
2</xml>
' Print Bytes
Console.WriteLine(String.Join("-", x.Value.Select(Function(c) AscW(c).ToString("X2"))))
End Sub
End Module
使用Visual Studio 2017(Framework 4.5.2)编译,产生
31-0A-32
而不是
31-0D-0A-32
正如我所预期的那样。我用二进制编辑器检查了源文件,它肯定包含xml文字中1到2之间的CR-LF(0D-0A)。
这是官方记录的行为还是我的编译器的一些实现细节,我不能依赖它?如果是前者,它在哪里记录?
答案 0 :(得分:5)
Microsoft正在观察已接受的XML标准,该标准仅使用换行符来表示XML中的换行符。这是为了与非Windows系统的互操作性,通常只使用换行。 Windows使用CR-LF作为标准,但您通常会发现只有LF在Windows上也可以作为换行符。