C# アプリケーションがあり、Linq から XML コレクションに複数の要素を抽出する必要があります。
XMLファイルからの次の抽出があります
<SNS>
<uniqueSystem><system>49</system><label>Engines</label>
<uniqueSubsystem><subsystem>30</subsystem><label>APU</label>
<uniqueUnit><unit>00</unit><label>Starter</label>
</uniqueUnit>
</uniqueSubsystem>
</uniqueSystem>
<uniqueSystem><system>50</system><label>Hydraulics</label>
<uniqueSubsystem><subsystem>30</subsystem><label>Reservoir</label>
<uniqueUnit><unit>00</unit><label>Pump</label>
</uniqueUnit>
</uniqueSubsystem>
</uniqueSystem></SNS>
各「uniqueSystem」要素内から値を抽出する必要があります。上記の例では、'SNS' 要素の下に 2 つの 'uniqueSystem' 要素があり、これらのそれぞれの中に 'uniqueSubsystem' 要素と 'uniqueUnit' 要素があり、それぞれに 'label' 要素があります。TreeView を構築するには、このデータを抽出する必要があります。
私の問題は、Linq を使用して複数の要素を抽出することです。どうすればいいですか?
現時点で私は持っています
var item = from items in doc.Descendants("SNS").Descendants("uniqueSystem").Descendants("system")
orderby items.Value
select items.Descendants("uniqueSystem");
これにより、「uniqueSystem」要素のコレクションが得られると思います。そこから、複数の要素の値を抽出する必要があります。誰でも助けてもらえますか?
次の試行は次のとおりですが、これにより null 参照例外が発生します。
var item = from items in doc.Descendants("SNS").Descendants("uniqueSystem").Descendants("system")
orderby items.Value
select items.Descendants("uniqueSystem");
foreach (var e in item)
{
string sys = e.Descendants("system").FirstOrDefault().Value;
string sysLabel = e.Descendants("system").Descendants("label").FirstOrDefault().Value;
string subsys = e.Descendants("subsystem").FirstOrDefault().Value;
string subsysLabel = e.Descendants("subsystem").Descendants("label").FirstOrDefault().Value;
string unit = e.Descendants("unit").FirstOrDefault().Value;
string unitLabel = e.Descendants("unit").Descendants("label").FirstOrDefault().Value;
buildSystemNodes(sys, sysLabel);
//getSubSystems(myitem);
}