2016-05-15 25 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")。値; ' – Sybren

+0

ありがとう@シブレン!できます。 –

+0

@AlexandruFlorinそれはうまく動作しません。あなたのXMLには属性はありません。 –

答えて

2

最後のテレビのidのクエリに対して<Type>LED</Type>にXMLのご<Type>LED</Tip>タグを作る取得するには、このような使用要素はありません)。

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

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

が作動し、デモ用のthis fiddleを参照してください。(彼らは順番にじゃない場合には)また、最も高いIDをお勧めします。

+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; 

もあった場合(これは0を返します一致

+0

この解決方法もあります。迅速な回答をいただきありがとうございます。 :)あなたはとても助けになりました。 –

+0

あなたは歓迎です – Mostafiz

関連する問題