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; }
}
現在我想使用一個接口來呼籲解析特定對象,但我還不知道怎麼做它正好。
任何其他想法或建議? :)
假設你的模型能夠適合解析數據,你怎麼從產生的DOM期待?我不清楚這一點。 –
@stfx:你是否正在按照http://en.wikipedia.org/wiki/Yaml中的定義解析YAML格式的文本,或者是你自己的標記語言(又一個)? –
爲什麼你需要重新解析任何東西?您應該能夠一次性解析任何有效的YAML文檔 – Dyppl