Rob*_*ers 17 .net xml vb.net linq-to-xml
Dim xml = <Root>
<Parent id="1">
<Child>Thomas</Child>
</Parent>
<Parent id="2">
<Child>Tim</Child>
<Child>Jamie</Child>
</Parent>
</Root>
Dim parents = xml.Elements
Run Code Online (Sandbox Code Playgroud)
在这种情况下,children包括所有Parent元素和所有Child元素.抓住直接后代的最佳方法是<Root>什么?
我应该编写一个LINQ查询来选择parent = <Root>?或者是否有一些我遗漏的内置方法可以为我解决这个问题?
编辑:我XElement.Elements和之间有一些混淆XElement.Descendants.正如Ruben Bartelink所指出的那样,XElement.Elements我会给我一些正在寻找的东西.
Rub*_*ink 18
执行摘要 - 您想:
xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
Run Code Online (Sandbox Code Playgroud)
第一个答案:
XElement.Descendants,还是一个技巧问题?:P 这里有一个使用Descendants的例子
修改回答,谢谢Tormod - 有些事情确实有问题!:
正如您所寻找的那样,元素可以提供直接的后代.后代给出了完整的等级[正如你所说的元素所做的那样].(我联系的例子清楚地说明了这一点.为混乱道歉!
所以,最后,你要找的是(这次在VB中):
Dim xml = <Root>
<Parent id="1">
<Child>Thomas</Child>
</Parent>
<Parent id="2">
<Child>Tim</Child>
<Child>Jamie</Child>
</Parent>
</Root>
REM All nodes two levels down in the hierarchy
Dim level2Nodes = xml.Elements.SelectMany(function(element) element.Elements)
level2Nodes.Dump
REM All Child nodes, no matter where they are:
Dim children = xml.Descendants("Child")
Run Code Online (Sandbox Code Playgroud)
由于REMs中涵盖的各种原因,每个元素都会产生3个```元素.
(在VB语句模式下将上面的内容直接粘贴到LINQPad中)
我现在看到什么可能让你感到困惑 - 当你使用Elements并在可视化器中查看它时,你仍然会看到孩子: -
Dim parents = xml.Elements
Run Code Online (Sandbox Code Playgroud)
如果您只想要实际名称,可以使用以下内容:
Dim parentNames = xml.Elements.Select(function(element) element.Name)
Run Code Online (Sandbox Code Playgroud)
请注意,在每种情况下,您都会得到两个结果.
如果你真的想剥离孩子,你想要:
Dim parentElements = xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
Run Code Online (Sandbox Code Playgroud)
你可以扩展你的问题来展示你真正想要的东西吗?
JP *_*oto 17
XElement.Elements获取子元素的集合.例如 ...
var s = @"<root>
<e1>
<e2>
</e2>
</e1>
<e1>
<e2>
</e2>
</e1>
<e1>
<e2>
</e2>
</e1>
</root>";
var doc = XElement.Load( new StringReader(s) );
Console.WriteLine( doc.Elements().Count() ); // 3
Console.WriteLine( doc.Descendants().Count()); //6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21615 次 |
| 最近记录: |