VB.NET XML文字中的换行符

时间:2017-07-20 15:44:37

标签: xml vb.net

显然,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)。

这是官方记录的行为还是我的编译器的一些实现细节,我不能依赖它?如果是前者,它在哪里记录?

1 个答案:

答案 0 :(得分:5)

Microsoft正在观察已接受的XML标准,该标准仅使用换行符来表示XML中的换行符。这是为了与非Windows系统的互操作性,通常只使用换行。 Windows使用CR-LF作为标准,但您通常会发现只有LF在Windows上也可以作为换行符。