2017-05-07 18 views
2

ではない配列をデシリアライズ:(XMLのスニペット)XML私は(タイルタイルエディタの)XMLファイルを持つ配列コンテナ

<map version="1.0" orientation="orthogonal" renderorder="right-down" width="64" height="64" tilewidth="32" tileheight="32" nextobjectid="1"> 
<tileset firstgid="1" name="GrassyTile_01" tilewidth="32" tileheight="32" tilecount="4" columns="2"> 
    <image source="GrassyTile_01.png" width="64" height="64"/> 
</tileset> 
<tileset firstgid="5" name="BlackTile_01" tilewidth="32" tileheight="32" tilecount="1" columns="1"> 
    <image source="BlackTile_01.jpg" width="32" height="32"/> 
</tileset> 

「タイルセット」の要素については、Xが存在することができますそれらのamountof、しかし、それらはXmlArrayに含まれていない、むしろちょうど別のものを追いかける。

XMLSerializerを使用してこれらの要素を配列として逆順化するメソッドを探していますが、正しい方法を見つけることができません。

これは私のコードです:これが可能であるか、私がするXMLReaderに頼らなければならない場合

[XmlRoot("map")] 
     public class XMLMAP 
     { 
      [XmlAttribute("version")] 
      public string Version; 
      [XmlAttribute("orientation")] 
      public string Orientation; 
      [XmlAttribute("renderorder")] 
      public string Renderorder; 
      [XmlAttribute("width")] 
      public int Width; 
      [XmlAttribute("height")] 
      public int Height; 
      [XmlAttribute("tilewidth")] 
      public int Tilewidth; 
      [XmlAttribute("tileheight")] 
      public int TileHeight; 
      [XmlAttribute("nextobjectid")] 
      public int NextObjectID; 
      [XmlArray] 
      public XMLMAP_TILESET[] TileSets; 
      [XmlRoot("tileset")] 
      public class XMLMAP_TILESET 
      { 
       [XmlAttribute("firstgid")] 
       public string FirstGID; 
       //No need for rest of code 
      } 
     } 

誰もが知っていますか?

+0

は、「マップ」に役立ちます

希望は私がこれを考え出すことになった質問をした後、すべての –

答えて

1

としてあなたXMLMAPクラスを再定義してみてください。

[XmlRoot("map")] 
public class XMLMAP 
{ 
    [XmlAttribute("version")] 
    public string Version; 
    [XmlAttribute("orientation")] 
    public string Orientation; 
    [XmlAttribute("renderorder")] 
    public string Renderorder; 
    [XmlAttribute("width")] 
    public int Width; 
    [XmlAttribute("height")] 
    public int Height; 
    [XmlAttribute("tilewidth")] 
    public int Tilewidth; 
    [XmlAttribute("tileheight")] 
    public int TileHeight; 
    [XmlAttribute("nextobjectid")] 
    public int NextObjectID; 

    [XmlElement("tileset")] 
    public List<TileSet> TileSets; 
} 

[XmlRoot("tileset")] 
public class TileSet 
{ 
    [XmlAttribute("firstgid")] 
    public string FirstGID; 
} 
XMLMAPList<TileSet>が含ま

、およびTileSetが、私は今

でdeserialiseでき

など、必要なすべての属性を含む別々のクラスとして定義されます

var serializer = new XmlSerializer(typeof(XMLMAP)); 

var reader = new StreamReader(path); 
var map = (XMLMAP)serializer.Deserialize(reader); 
reader.Close(); 

さらに、のリストが含まれています

付属のxmlの最後にクローズ</map>タグを追加した後にのみこれを行うことができます。

+0

短絡時にルートではありませんが、実際には質問に答える誰かであるためにそんなにありがとう! – XBLToothPik

+0

@XBLToothPik心配する必要はありません。私はこれまでに苦労していましたので、正しく理解する前に混乱する可能性があります。 – Bassie

関連する問題