2013-12-18 158 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 : ""; 
相關問題