2013-12-18 191 views
0

我有一个XML文档,像下面如何获得使用子节点名称的XML的特异性节点LINQ

<A> 
    <B> 
    <C name="C1" >value1</C> 
    <C name="C2">value2</C> 
    <C name="C3">value3</C> 
    <C name="C4">value4</C> 
    </B> 
</A> 

给予我想用节点名称获取特定的节点。我怎样才能达到使用LINQ。我不是那么好与LINQ

+2

请张贴什么你已经尝试过。我们可能会解决您所面临的问题。 Thx –

+1

什么样的节点?基于什么:名称,属性和价值?请具体说明。 –

+0

@AndreiV基于属性名称我想获得它的价值 – Optimus

回答

1
var doc = XDocument.Load(path_to_xml); 
var value = (string)doc.Root.Element("B").Elements("C") 
         .FirstOrDefault(c => (string)c.Attribute("name") == "C3"); 

或者使用XPath

var value = (string)doc.XPathSelectElement("A/B/C[@name='C3']"); 
0

谢尔盖的回答是更准确和可读性。然而,如果不关心其他节点如果你只是想要快速的基于对具有特定属性的节点,您还可以使用此:

string value = ""; 
value = xml.Descendants().Where(x => x.Attribute("name") != null && x.Attribute("name").Value == "C2").FirstOrDefault() != null ? 
     xml.Descendants().Where(x => x.Attribute("name") != null && x.Attribute("name").Value == "C2").FirstOrDefault().Value : ""; 
相关问题