Linq到XML Descendants和Elements的区别是什么?
我在VS智能感知中遇到了这两个关键字。 我试图搜寻他们之间的差异,没有得到明确的答案。 其中哪一个在中小型XML文件上具有最佳性能。 谢谢
Elements
只能find那些直接后代的元素,即直接的孩子。
Descendants
find任何级别的儿童,即儿童,大孩子等…
这是一个演示不同的例子:
<?xml version="1.0" encoding="utf-8" ?> <foo> <bar>Test 1</bar> <baz> <bar>Test 2</bar> </baz> <bar>Test 3</bar> </foo>
码:
XDocument doc = XDocument.Load("input.xml"); XElement root = doc.Root; foreach (XElement e in root.Elements("bar")) { Console.WriteLine("Elements : " + e.Value); } foreach (XElement e in root.Descendants("bar")) { Console.WriteLine("Descendants : " + e.Value); }
结果:
要素:testing1 元素:testing3 后裔:testing1 后裔:testing2 后裔:testing3
如果你知道你想要的元素是直接的孩子,那么如果你使用Elements
而不是Descendants
你将会获得更好的performance。
Descendants
将search指定名称的当前元素的整个子树(或者如果没有提供名称,将返回树的扁平版本),而Elements
只search当前元素的直接子元素。