Чтение данных из XElement, в котором элементы смешаны с обычным содержимым.

XElement имеет следующее значение:

<parent><child>text inside element</child>and plain content</parent>

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

Что я уже пробовал?

Я устал использовать xElement.Value, но это объединяет два узла без пробела между ними: «текст внутри элемента и простое содержимое».


person Fitzchak Yitzchaki    schedule 05.06.2012    source источник
comment
Нет репро. Я вижу, что .Value получает много пробелов и новую строку.   -  person Henk Holterman    schedule 05.06.2012
comment
Я думаю, xml должен быть чем-то вроде <parent><child>text inside element</child>and plain content</parent>   -  person L.B    schedule 05.06.2012


Ответы (1)


Текст, который вы ищете, хранится в узлах типа XText. Таким образом, вы можете получить доступ к этим узлам следующим образом:

xElement.DescendantNodes()
        .OfType<XText>()
        .Select(t => t.Value)

Это даст вам такой результат:

text inside element 
and plain content 

Затем вы можете объединить их по своему усмотрению (например, с помощью String.Join).

person Botz3000    schedule 05.06.2012
comment
@HenkHolterman Да, если он хочет, чтобы между значениями был ровно один пробел, это было бы хорошей идеей. - person Botz3000; 05.06.2012