2011-07-12 72 views
0

我正在爲我的項目創建一個簡單的Yaml解析器,我真的很想知道如何設計將數據讀入對象的方式,反之亦然。設計:C#文本解析器

首先,我不想使用反射來序列化/反序列化,因爲它的速度很慢,而且不足以滿足我的需求。

目前我使用一個簡單的類來存儲所有的通用數據解析器/寫:

public class YamlObject 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
    public List<YamlObject> SubObjects { get; set; } 
} 

但是因爲讓所有的YamlObjects後,我不得不再次重新分析它們,將它們存儲到那不是真快特定對象。必須遍歷列表才能找到名稱匹配的列表,這也很慢。

編輯: 例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; } 
} 

現在我想使用一個接口來呼籲解析特定對象,但我還不知道怎麼做它正好。

任何其他想法或建議? :)

+1

假設你的模型能夠適合解析數據,你怎麼從產生的DOM期待?我不清楚這一點。 –

+0

@stfx:你是否正在按照http://en.wikipedia.org/wiki/Yaml中的定義解析YAML格式的文本,或者是你自己的標記語言(又一個)? –

+0

爲什麼你需要重新解析任何東西?您應該能夠一次性解析任何有效的YAML文檔 – Dyppl

回答