2016-11-29 4 views
4

を私はこのようなXMLコードだ:私は1個のタグだけ、電子が必要パフォーマンスの高い方法 - C#

<Body> 
    <Schoolyear>2016</Schoolyear> 
    <ClassLeader> 
    <Id>200555</Id> 
    <Name>Martin</Name> 
    <Short>ma</Short> 
    </ClassLeader> 
    <Info> 
    some very useful information :) 
    </Info> 
</Body> 

を。 g。それは作品

foreach (XElement element in Document.Descendants("Schoolyear")) 
{ 
    myDestinationVariable = element.Value; 
} 

が、私は多分よりパフォーマンスと容易な解決策があると思います。SchoolYear

は、私はこれを試してみました。

+5

のいずれかを使用し、指定したXName

Elementを使用しますが、 'FirstOrDefault(呼び出すみました) '代わりに?ここでループの必要はありません... –

+2

xml.DocumentElement.SelectSingleNode( "/ body/Schoolyear")。InnerText – Fuzzybear

+1

私はFirstOrDefault()が内部でforeachを使用していると思います。そのため、パフォーマンスを考慮してSelectSingleNodeを使用する方がよいでしょう。 –

答えて

2

あなたはLINQを使用してそれを取ることができるか、単に名前空間

using System.Xml.Linq; 

を追加し、これらの例

 string xml = @"<Body> 
    <Schoolyear>2016</Schoolyear> 
    <ClassLeader> 
    <Id>200555</Id> 
    <Name>Martin</Name> 
    <Short>ma</Short> 
    </ClassLeader> 
    <Info> 
    some very useful information :) 
    </Info> 
</Body>"; 

XDocument dox = XDocument.Parse(xml); 

var exampl1 = dox.Element("Body").Element("Schoolyear").Value; 

var exampl2 = dox.Descendants().FirstOrDefault(d => d.Name == "Schoolyear").Value; 
+0

それは働いてくれてありがとうございますが、私のコードは速いですか? –

関連する問題