2014-03-13 33 views
0

XML,如何在c#中选择特定的XML节点?

<A> 
    <B id="ABC"> 
     <C name="A" /> 
     <C name="B" /> 
     <C name="C" /> 
     <C name="G" /> 
    </B> 
    <B id="ZYZ"> 
     <C name="1" /> 
     <C name="2" /> 
     <C name="3" /> 
     <C name="4" /> 
    </B> 
    </A> 

,我需要选择只<C>节点和分配给一个变量。

我用以下C#代码不工作,

var asdf = c.Elements("C");

asdf应该包含,

<C name="A" /> 
<C name="B" /> 
<C name="C" /> 
<C name="G" /> 
<C name="1" /> 
<C name="2" /> 
<C name="3" /> 
<C name="4" /> 

任何帮助表示赞赏!

+1

这里'c'是什么?你没有给我们足够的上下文。这听起来像你只是在寻找'Descendants(“C”)'方法而不是'Elements(“C”)'。 –

回答

2

您需要Descendants,如:

var cNodes = document.Descendants("C"); 

对于输出:

foreach (var item in cNodes) 
{ 
    Console.WriteLine(item); 
} 

您将获得:

<C name="A" /> 
<C name="B" /> 
<C name="C" /> 
<C name="G" /> 
<C name="1" /> 
<C name="2" /> 
<C name="3" /> 
<C name="4" /> 
2

此运行:

XElement x = XElement.Parse("your_xml_string"); 

var asdf=x.Elements("B").Elements("C"); 
+0

TLama你的编辑有什么变化?对不起,但我是新来的。 –