Получить пробел в XElement - PullRequest
       38

Получить пробел в XElement

5 голосов
/ 28 апреля 2011

Я знаю, что это немного глупо, но XML, который я преобразовываю, иногда имеет элемент, состоящий из одного или двух пробелов. Как это:

Dim es1 = <Text> </Text>

Когда я пытаюсь получить .Value этого типа Dim resultText = es1.Value, это просто пустая строка. Это не проблема, если в элементе есть начальный и / или конечный пробел и хотя бы еще один символ.

Есть ли способ заставить .Value дать мне пробел, если это все, что есть?

Ответы [ 3 ]

6 голосов
/ 28 апреля 2011

Используйте LoadOptions.PreserveWhitespace при разборе XML. Пример кода 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, но я предполагаю, что обычно вы на самом деле анализируете файл и т. Д.)

2 голосов
/ 28 апреля 2011

Загрузите ваш XDocument с:

LoadOptions.PreserveWhitespace
1 голос
/ 03 октября 2015

Если вам нужен литерал XML с пробелами, используйте встроенное выражение.Этот пример имеет два пробела.

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