0

私は完全に困惑しています。以前は非常によく似たコードを使用していましたが、これは完全に機能しました。このXMLはこのプログラムの別の方法で記述され、それに対して、それは同様に正しいファイルにLinqでXMLファイルを読むときにNullReferenceExceptionが発生する(C#4.0)

UserType CurrentUser = new UserType(); 
XDocument UserDoc = XDocument.Load(Path2UserFile); 

XElement UserRoot = UserDoc.Element("User"); 
CurrentUser.User_ID = int.Parse(UserDoc.Element("User_ID").Value); 
CurrentUser.Full_Name = UserDoc.Element("Full_Name").Value; 
CurrentUser.Gender = UserDoc.Element("Gender").Value; 
CurrentUser.BirthDate = DateTime.Parse(UserDoc.Element("Birthdate").Value); 
CurrentUser.PersonType = int.Parse(UserDoc.Element("PersonType").Value); 
CurrentUser.Username = UserDoc.Element("Username").Value; 
CurrentUser.Password = UserDoc.Element("Password").Value; 
CurrentUser.Email_Address = UserDoc.Element("Email_Address").Value; 

Path2UserFileポイントXMLファイルを解析するためのコードをだ細かい

を見て、私はそれが完全なパスを書き出しました。

それは

XMLファイルが

<User> 
    <User_ID>11</User_ID> 
    <Full_Name>Sample User</Full_Name> 
    <Gender>Male</Gender> 
    <BirthDate>12/12/2010 12:00:00 AM</BirthDate> 
    <PersonType>2</PersonType> 
    <Username>Sample User</Username> 
    <Password>sample123</Password> 
    <Email_adddress>[email protected]</Email_adddress> 
</User> 

UserTypeクラスは、この

class UserType 
{ 
     public int User_ID = 0; 
     public string Full_Name = string.Empty; 
     public string Gender = string.Empty; 
     public DateTime BirthDate; 
     public int PersonType = 0; 
     public string Username = string.Empty; 
     public string Password = string.Empty; 
     public string Email_Address = string.Empty; 
} 
のように見えます。この形式には以下の要素のいずれかの内容を解析しようとするたび とNullReferenceExceptionがあり

私は何が間違っているかについての手掛かりはありません、どんな助けも非常に高く評価されるでしょう

答えて

2

UserRootUserRoot宣言後のもの)への参照をすべて変更してください。オブジェクトはXElementではなくXDocumentであるため、そのレベルで操作する必要があります。そうでなければUserDoc.Root.Element(...)を参照することができますが、それはもっと長くなります。

UserType CurrentUser = new UserType(); 
XDocument UserDoc = XDocument.Load(Path2UserFile); 

XElement UserRoot = UserDoc.Root; 
CurrentUser.User_ID = int.Parse(UserRoot.Element("User_ID").Value); 
CurrentUser.Full_Name = UserRoot.Element("Full_Name").Value; 
CurrentUser.Gender = UserRoot.Element("Gender").Value; 
CurrentUser.BirthDate = DateTime.Parse(UserRoot.Element("BirthDate").Value); 
CurrentUser.PersonType = int.Parse(UserRoot.Element("PersonType").Value); 
CurrentUser.Username = UserRoot.Element("Username").Value; 
CurrentUser.Password = UserRoot.Element("Password").Value; 
CurrentUser.Email_Address = UserRoot.Element("Email_address").Value; 

また、あなたのケースに注意してください。 Birthdate(大文字の "D")の代わりにBirthDateを使用してください。同様に、Email_addressではなく、Email_Address(小文字の「a」)であり、XMLに「アドレス」(スペルミス)の3つのDが含まれています。

+0

私はそれが本当に本当に愚かだったことを知っていました。ありがとう –

+0

@Indebi問題はありません。私の答えもまた読んでください。私はあなたのコメントがなされて以来、いくつかの他の問題を指摘しました。 –

関連する問題