在XElement中获取空格

时间:2011-04-27 23:08:42

标签: .net vb.net linq-to-xml whitespace xelement

我知道这有点愚蠢,但我正在转换的XML有时会有一个只有单个或双个空格的元素。像这样:

Dim es1 = <Text> </Text>

当我尝试将此.Value作为Dim resultText = es1.Value时,它只是一个空字符串。如果元素中有前导和/或尾随空格以及至少一个其他字符,则这不是问题。

无论如何强迫.Value给我空白区域,如果有的话呢?

3 个答案:

答案 0 :(得分:6)

解析XML时使用LoadOptions.PreserveWhitespace。 C#示例代码:

using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        string xml = "<Foo> </Foo>";

        XElement withWhitespace = XElement.Parse(xml,
            LoadOptions.PreserveWhitespace);
        Console.WriteLine(withWhitespace.Value.Length); // Prints 1
        XElement withoutWhitespace = XElement.Parse(xml);
        Console.WriteLine(withoutWhitespace.Value.Length); // Prints 0

    }
}

(显然,使用Load以及Parse等时可以使用此功能。)

我不知道如何适应VB XML文字,但我会假设你通常是从文件中解析等等。)

答案 1 :(得分:2)

使用以下命令加载XDocument:

LoadOptions.PreserveWhitespace

答案 2 :(得分:1)

如果您需要带有空格的XML文字,请使用嵌入式表达式。这个例子有两个空格。

    Dim TwoSpaces As XElement = <f><%= "  " %></f>
    Dim s As String = TwoSpaces.Value