【发布时间】:2009-06-01 17:51:55
【问题描述】:
我将以下 XML 文档加载到 C# Silverlight 中:
<parent>
<son name="Jim">
<grandson>Billy</grandson>
<granddaughter>Sue</granddaughter>
</son>
<daughter name="Sally">
</daughter>
</parent>
我想做一个 LINQ 查询,以便查询父节点并仅获取“儿子”和“女儿”节点的列表。当我到达“儿子”类型的节点时,我想对其自己的孩子进行另一个查询。
我试过了:
IEnumerable<XElement> Children =
from childNode in parents.Descendants()
select (XElement)childNode ;
foreach(XElement childNode in Children){
// other code
}
但这给了我一切(儿子、女儿、孙子、孙女)。
我想做的是这样的:
foreach(XElement childNode in Children){
switch(childNode.Name.ToString()){
case "son":
// look for "grandson" and "granddaughter" as children of "son" now
break;
case "daughter":
// don't look for anything
break;
}
}
所以基本上,我只想要查询中返回的第一级子级,稍后我会查询其余的。
我不确定是否应该在原始 LINQ 查询、foreach 条件或什么中完成。我无法控制 XML 文档格式,因此无法将其更改为更好的格式。谢谢!
【问题讨论】:
-
我想我会为 XML 使用不同的标签,所以除非这是示例数据,否则我会一直使用
和 。 应该是 元素或其他东西,然后只是 等等。
标签: c# xml linq silverlight