2011-07-30 11 views
0

私はこの問題を完全に取り除かれています。私は "オブジェクトのインスタンスに設定されていないオブジェクト参照"を取得しています。エラー - 私は理由を理解することはできません。これは私が持っているコードです:私のプロフィールクラスです。ここオブジェクト参照がオブジェクトのインスタンスに設定されていません - LINQ

 public class PlayerProfile 
    { 
     public List<Profile> PlayerINfo = new List<Profile>(); 


     public void LoadProfiles(string path) 
     { 
      XDocument xmlDoc = XDocument.Load(path); 
      PlayerINfo = new List<Profile>(); 

// This is where I get the error: 
      PlayerINfo = (from profiles in xmlDoc.Root.Element("OnlineProfile").Elements("Player") 
           select new Profile 
           { 
            Name = (string)profiles.Element("Name"), 
            Sex = (string)profiles.Element("Sex"), 
            Avatar = (string)profiles.Element("Avatar").Attribute("path") ?? "", 
            Created = (DateTime)profiles.Element("Created") 
           }).ToList(); 


     } 
    } 

public class Profile 
{ 
    public string Name { get; set; } 
    public string Sex { get; set; } 
    public string Avatar { get; set; } 
    public DateTime Created { get; set; } 

} 

EDIT - XMLファイルのコードを追加:解決+これを試してみた

<?xml version="1.0" encoding="utf-8"?> 
<OnlineProfile> 
    <Player> 
    <Name>Stacey</Name> 
    <Sex>Female</Sex> 
    <Avatar path="/images/Picture.png" /> 
    <Ratio> 
     <Win>0</Win> 
     <Loss>0</Loss> 
     <Abandoned>0</Abandoned> 
    </Ratio> 
    <Created>6/19/2011</Created> 
    </Player> 

</OnlineProfile> 
+0

を行うことも – Stacey

+0

うまくXMLファイルをロードし、あなたは何のスペルミスがどこにも存在しないことを確認していますか?すべてのケースが一致していますか? – c0deNinja

+0

xmlドキュメントのサンプルを投稿する – c0deNinja

答えて

1

はこれを行います。

+0

XMLを追加したばかりです。profiles.Element( "Avatar")属性を削除すると、属性( "path")が表示されます。 – Stacey

+0

私は私の答えを変えました。 :) –

+0

それを修正したああ! – Stacey

0

これはビジュアルスタジオで。私は上の人々が私にそれを打ち負かすのを見る。これを達成するための別の方法は次のとおりです。

xmlDoc.Element("OnlineProfile").Elements("Player") 

これは私がXMLに先立って利用できるbecomming掲載するものです...ここ

は、そのエラー

(string)profiles.Element("Avatar").Attribute("... 

」のための良い候補です).Attributeによってエラーが発生する可能性があります。ヌルを確認する必要があります。

たとえば

= profiles.Element("Avatar") != null ? (string)profiles.Element("Avatar").Attribute("... : null; 

Xmlファイルには、Avatarという要素がありますか。ファイルが正しく読み込まれましたか?あなたは「OnlineProfile」を掲載XMLからprofiles in xmlDoc.Root.Element("OnlineProfile").Elements("Player")

からfrom profiles in xmlDoc.Element("OnlineProfile").Elements("Player")の代わりに、あなたのルート要素であるので、あなたがそこアレント期待子要素:

+0

XMLファイルにAvatarという要素があります。私はその記事をXMLで一瞬で更新します。このファイルには、正しくロードされていることも表示されます。私はlinqクエリから名前を除くすべての項目を削除し、まだエラーが発生しました。 – Stacey

+0

あなたは人がcut'n'pasteあなたのコードを簡単にできるようにすることができる場合、文字列からいくつかのXMLの読み込み。 – sgtz

+0

@Stacey:これを解決するもう1つの方法は、上記の投稿です。 – sgtz

4
from profiles in xmlDoc.Root.Element("OnlineProfile").Elements("Player") 

これが問題である - OnlineProfileあなたのルート要素である、ちょうど

from profiles in xmlDoc.Root.Elements("Player") 
関連する問題