2010-07-16 2 views
1

Я пытаюсь получить все узлы из XElement, что на самом деле имеет значение, в настоящее время я использую этот код:Как получить все непустые узлы из XElement?

var nodes = from node in elem.Nodes() 
      where node.NodeType == XmlNodeType.Element && 
        ((XElement) node).Value.Length > 0 
      select node; 

Есть ли построить в операторе, чтобы сделать эту операцию?

Благодаря

ответ

1

Я не верю, что там что-то похожее на это. Вы уверены, что хотите включить элементы, которые имеют подэлементы хотя? Например:

XElement e = new XElement("Foo", new XElement("Bar")); 
Console.WriteLine(e); 
Console.WriteLine(e.Value.Length); 

Это будет печатать:

<Foo> 
    <Bar /> 
</Foo> 
0 

... так Foo будет включен в качестве «пустой» узел, даже если он содержит другой элемент. Это определенно то, что вам нужно?

+0

Нет, я не хочу, мне нужны непустые листовые узлы пройденного элемента. Это сделает эту работу? var e = из узла в элементе.Elements() где! Node.HasElements && node.Value.Length> 0 select node; – Arjor

+0

@Arjor: вам также может понадобиться подумать об атрибутах ... вы можете протестировать элемент !.DescendantNodes(). Any() –

Смежные вопросы