前提・実現したいこと
XMLファイルをインポートし、teammembers要素の数値が最大の要素を抽出し、コンソール画面に表示させたいのですが、エラーが出てしまい、実行中に例外が発生しました。
XMLファイル内に、ballsport要素が3つあり、そのそれぞれに、teammembers要素が含まれています。
やりたいことは、teammembers要素の数値が最大のballsport要素を抽出し、name要素とteammembers要素をコンソール画面に表示することです。
Maxメソッドがあるので、それを使って上手くクラスやディクショナリークラスを経ずにXDocumentクラスやXElementクラスを使って上記操作を実現したいです。
よろしくお願いします。
発生している問題・エラーメッセージ
System.NullReferenceException: 'Object reference not set to an instance of an object.' MaxMembers が null でした。
該当のソースコード
C#
1 static void Main(string[] args) 2 { 3 var xdoc = XDocument.Load(@"C:\Users\lifeg\Desktop\ballsports.xml"); 4 5 var MaxMembers = xdoc.Root.Elements("teammembers").Max(); 6 7 Console.WriteLine("{0} {1}",MaxMembers.Element("name").Value,MaxMembers.Element("teammembers").Value); 8 }
XML
1<?xml version="1.0" encoding="UTF-8"?> 2<ballSports> 3 <ballsport> 4 <name kanji="籠球">バスケットボール</name> 5 <teammembers>5</teammembers> 6 <firstplayed>1891</firstplayed> 7 </ballsport> 8 <ballsport> 9 <name kanji="排球">バレーボール</name> 10 <teammembers>6</teammembers> 11 <firstplayed>1895</firstplayed> 12 </ballsport> 13 <ballsport> 14 <name kanji="野球">ベースボール</name> 15 <teammembers>9</teammembers> 16 <firstplayed>1846</firstplayed> 17 </ballsport> 18</ballSports>
試したこと
匿名クラスに一度格納してから、並べ替えることはできましたが、XML自体がすでに構造化されているので、なんとかXDocumentクラスやXElementクラスで表示する方法を模索しています。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2019
Version 16.4.2
回答2件
あなたの回答
tips
プレビュー