私は自分のプロジェクト用の単純なYamlパーサーを作成中です。オブジェクトにデータを読み込む方法を設計する最良の方法について知りたいと思っています。デザイン:C#テキストパーサ
まずは、自分のニーズに十分にカスタマイズできないゆっくりとしているため、リフレクションをシリアル化/デシリアライズする必要はありません。
は現在、私は、パーサ/ライタのためのすべての一般的なデータを格納するための単純なクラスを使用します。public class YamlObject
{
public string Name { get; set; }
public string Value { get; set; }
public List<YamlObject> SubObjects { get; set; }
}
しかし、すべてYamlObjectsを取得した後、私は再びそれを再解析する必要があるにそれらを格納するため、高速本当にないthatsの特定のオブジェクト。一致する名前のものを見つけるためにリストをループすることはかなり遅いです。
EDIT: 例YAML:
terrain:
- prefab: Lava1
- position: 0,0,2000
prefab: Lava1_Rocks1
マイオブジェクト:
public class Terrain
{
public Vector3 Position { get; set; }
public Vector3 Rotation { get; set; }
public string Prefab { get; set; }
}
public class Mission
{
public Terrain[] TerrainData { get; set; }
}
今、私はパース時に特定のオブジェクトを呼び出すためのインターフェースを使用して考えていたが、まだ動くかどうかはわかりませんそれは正確に。
他のアイデアやアドバイスはありますか? :)
、あなたは結果のDOMから何を期待していますか?それは私には明らかではない。 –
@stfx:http://en.wikipedia.org/wiki/Yamlに定義されているYAML形式のテキストを解析するパーサーを作成していますか、それとも独自のマークアップ言語ですか? –
なぜ何かを再解析する必要がありますか?有効なYAML文書を1回のパスで解析できるはずです – Dyppl