2016-05-15 60 views
0

我搜索了很長時間纔得到答案,但正如我所看到的不工作。 我有一個XML文件,我想讀一個節點的特定元素。 例如,這是XML:C#讀取XML節點中的特定元素

<Root> 
    <TV> 
    <ID>2</ID> 
    <Company>Samsung</Company> 
    <Series>13523dffvc</Series> 
    <Dimesions>108</Dimesions> 
    <Type>LED</Type> 
    <SmartTV>Yes</SmartTV> 
    <OS>WebOS</OS> 
    <Price>1993</Price> 
    </TV> 
</Root> 

我想在代碼中的ID元素作爲變量,這樣我就可以增加它,我將添加一個項目。 這是目前的代碼,但我找不到從項目本身中選擇某種東西的方法。

XDocument doc = XDocument.Load("C:TVList.XML"); 
XElement TV = doc.Root; 
var lastElement = TV.Elements("TV").Last() 
+0

嘗試'TV.Attribute(「ID」)。Value;' – Sybren

+0

謝謝@Sybren!有用。 –

+0

@AlexandruFlorin它不能工作,你的XML中沒有任何屬性,更不用說一個叫做'ID'的! –

回答

2

一個過去電視的ID查詢(如果這將返回0有沒有元素):

var lastId = (int) doc.Descendants("TV") 
    .Elements("ID") 
    .LastOrDefault(); 

您可能還需要最高的ID(如果他們不按順序):

var maxId = doc.Descendants("TV") 
    .Select(x => (int)x.Element("ID")) 
    .DefaultIfEmpty(0) 
    .Max(); 

了工作演示見this fiddle

+0

這是正確的。我仍然是初學者,如果我在Visual Studio中看不到任何錯誤,對我來說似乎是正確的。你的解決方案正在工作,它非常簡單:(謝謝你爲我分配的時間。 –

2

使用這樣得到的值id

XDocument doc = XDocument.Load(@"C:\TVList.XML"); 
XElement root = doc.Element("Root"); 
XElement tv = root.Element("TV"); 
XElement id = tv.Element("ID"); 
string idvalue = id.Value; 

也讓XML的<Type>LED</Tip>標籤<Type>LED</Type>的比賽

+0

此解決方案也是可行的。感謝您的及時答覆。 :)你一直很有幫助。 –

+0

不用客氣 – Mostafiz