2017-08-11 2 views
1

XMLファイルからデータを取り出すforeachループがありますが、一部のフィールドは空白です。ループが特定の値を取得しようとすると、null参照例外が発生することがあります。他のすべての値を効率的に表示している間に、空の値を持つ変数を取り除く方法がありますか?例のために、アドレスフィールドがヌル値を返すと言うことができます。null参照オブジェクトを除くすべての値を表示

 XmlDocument xmldoc = new XmlDocument(); 
     xmldoc.Load(id); 

     XmlNodeList person = xmldoc.SelectNodes("//parent/child"); 

     foreach (XmlNode node in person) 
     { 
      try 
      { 
       var name = node["name"].InnerText; 
       var phone = node["phone"].InnerText; 
       var email = node["email"].InnerText; 
       var address = node["address"].InnerText; 

       lblPopulate2.Text = name; 
       lblPopulate7.Text = address; 
       lblPopulate5.Text = phone; 
       lblPopulate6.Text = email; 
      } 
      catch(NullReferenceException ex) 
      { 
       ??? 
      } 
      finally 
      { 
      } 

答えて

2

あなたはアドレスノードが存在しない場合はnullを返しますnull conditional operator、そうでない場合はInnerText使用することができます。

var address = node["address"]?.InnerText; 

そしてあなたTextプロパティを設定するためのnull coalescing operator

lblPopulate7.Text = address ?? string.Empty; 
+2

一行は 'lblPopulate7.Text =ノード[ "アドレス"]働くだろう?。InnerTextプロパティ? string.Empty'; – Nkosi

+0

@ Nkosiはい。おそらく読みにくいですが。 –

+1

Nugetを使用してC#言語を5から6にアップグレードしていただきありがとうございました。 Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform – rychrist88

関連する問題