2014-03-06 61 views
0

我的XML看起来像这样:试图让所有的孩子的价值观节点

<names> 
    <goodnames> 
     <name>Alpha</name> 
     <name>Beta</name> 
    </goodnames> 
    <badnames> 
     <name>blabla</name> 
    </badnames> 
</names> 

现在我试图让属于goodnames或badnames所有子节点的值。我试过的代码是这样的:

var goodnames = from el in doc.Root.Elements("goodnames") select el.Element("name"); 

不幸的是,这只返回第一个元素,在这个例子中是Alpha。不过,我想获得所有名称元素。

+0

'选择el.Element * * s **(“name”);' –

回答

1

如果你想所有的名字,你需要这样做:

var allNames = 
    from e in doc.Root.Descendants("name") 
    select e.Value; 

如果你只是想好名字还是坏名,尝试这样的事情:

var goodnames = 
    from el in doc.Root.Elements("goodnames") 
    from n in el.Elements("name") 
    select n.Value; 
+0

谢谢,你的第二个建议正是我所期待的。 – Haris