在XElement中获取空格

5

我知道这有点傻,但是我要转换的XML有时会包含只有一个或两个空格的元素。就像这样:

Dim es1 = <Text> </Text>

当我尝试获取类似 Dim resultText = es1.Value 的值时,它只是一个空字符串。如果元素中有前导和/或尾随空格以及至少一个其他字符,则不会出现此问题。
是否有任何方法可以强制 .Value 在仅存在空格时也返回空格?
3个回答

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

    }
}

(显然,在使用LoadParse等方法时都可以使用。)
我不知道这如何与VB XML文本字面量配合使用,但我会假设通常情况下你实际上是从文件中解析的 :)

2

使用以下代码加载您的XDocument:

LoadOptions.PreserveWhitespace

被伟大的人抢了猎物。 ;) - Trey Carroll

1
如果您需要带有空格的 XML 文字,请使用嵌入式表达式。此示例有两个空格。
    Dim TwoSpaces As XElement = <f><%= "  " %></f>
    Dim s As String = TwoSpaces.Value

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接