2011-10-25 4 views
0

私はXMLとXNAの新機能であり、リストを読むために不安に遭遇しました。たくさんの異なるレイヤーを持つタイルマップを保存するために出力しています。C#を使用してXMLファイルからList <>を読み取る方法は? (XNAベースの問題)

My XML私は現時点では

public void LoadContent(XDocument doc, TileMap myMap) 
    { 
     XDocument mapDoc = doc; 
     TileMap map = myMap; 

     foreach (XElement element in mapDoc.Element("R").Elements("Item").Elements("C")) 
     { 
      foreach (XElement mapValue in mapDoc.Element("Item").Elements()) 
       { 
        if (mapValue.Name.Equals("E")) 
        { 
        //do something 
        } 
        else if (mapValue.Name.Equals("ID")) 
        { 
        } 
        else if (mapValue.Name.Equals("B")) 
        { 
        } 
        else if (mapValue.Name.Equals("H")) 
        { 
        } 
        else if (mapValue.Name.Equals("T")) 
        { 
        } 
       } 
     } 
    } 

<XnaContent xmlns:Maps="TileEditorLibrary.Maps"> 
<Asset Type="Maps:TileMap"> 
    <R> 
     <Item> 
     <C> 
      <Item> 
      <E>1</E> 
      <ID>8</ID> 
      <B>8</B> 
      <H /> 
      <T /> 
      </Item> 
      <Item> 
      <E>1</E> 
      <ID>8</ID> 
      <B>8</B> 
      <H /> 
      <T /> 
      </Item> 
     </C> 
     </Item> 
    </R> 
    </Asset> 
</XnaContent> 

それを読むために私のコードは次のようになりますが、私は次のことで行くことにどこへと倒すよ:この(ちょうどサンプル)のように見えますアプリケーションを実行して、ドキュメントを取得していることを確認する大丈夫との情報を解析することができますが、これはかなりあいまいなようだ場合、私は謝るが、原因XMLとの私の経験不足に私はすべての将来の顧問

を助けるかもしれない他のどのような情報はわからないnullオブジェクト参照

を投げています尋ねると、私はあなたが何をすべき

感謝

バリー

+0

を? –

答えて

1

これは、あなたの思考のためのいくつかの食べ物を与えるかもしれません: `nullオブジェクトreference`エラーを投げている何行

public void LoadContent(XDocument doc, TileMap myMap) 
{ 
    var lookup = new Dictionary<string, Action<string>>() 
    { 
     { "E", v => { Console.WriteLine("E = " + v); } }, 
     { "ID", v => { Console.WriteLine("ID = " + v); } }, 
     { "B", v => { Console.WriteLine("B = " + v); } }, 
     { "H", v => { Console.WriteLine("H = " + v); } }, 
     { "T", v => { Console.WriteLine("T = " + v); } }, 
    }; 

    var actions = 
     from e in doc.Root 
      .Element("Asset") 
      .Element("R") 
      .Elements("Item") 
      .Elements("C") 
     from mv in e 
      .Elements("Item") 
      .Elements() 
     let name = mv.Name.ToString() 
     let value = mv.Value 
     select new Action(() => lookup[name](value)); 

    foreach (var a in actions) 
     a.Invoke(); 
} 
+0

ありがとう、うまくいけば、今すぐソートすることができます – BarryH1987

2

を説明しようしてくださいに役立つかもしれない何かがある場合はXML serialization and deserialization上に読み込まれます。
XMLを表すクラスを作成し、XMLの解析をせずに直接デシリアライズすることができます。

Her eは、それを行う方法の例です。

+0

多くのありがとうサニは、これを見ています – BarryH1987

+0

ヘルプの皆のためのすべてのソートありがとう – BarryH1987

関連する問題