题
我建立一个游戏在Visual Studio 2008,并以建设水平,我将有两种类型的文件(比实际多,但是这两个都是唯一的,以我的问题很重要)我需要解析。一个将决定一个级别的内容,将是这个样子:
LevelName = “样本水平”
Object1Type = “CustomObject”
Object1File = “WideFloor_DF”
Object1Position = 600600
Object2Type = “圈”
Object2Position = 550,500
Object2Mass = 5
等
另外,将决定对自定义对象的属性,并且是这个样子:
名称= “宽地板”
质量= 1
GeometryMap = “WideFloor_GM”
IsStatic =真
等
我不是很熟悉的正则表达式(读:我不喜欢他们,因为外观太像线路噪声很容易理解)?我想知道是否有比使用正则表达式万吨的更简单的方法
编辑:我知道我忘带了什么东西!我真的很讨厌的XML文件,所以我真的不喜欢使用它们(waaaaaaaay太冗长对我来说)。 编辑2:我喜欢的格式我想出了,宁愿不改变
。解决方案
有关使用XML文件是什么?你可以阅读和使用的XMLReader和XMLWriter的对象他们很容易写,你就不必在所有的处理正则表达式。
<Level name="Sample Level">
<Object type="CustomObject" file="WideFloor_DF" positionX="600" positionY="600" />
<Object type="Circle" file="WideFloor_DF" positionX="500" positionY="500" mass="5" />
</Level>
其他提示
如果你要在人类可读的格式文件,无论如何,为什么不使用XML?
如果您在文件格式控制,你可以尝试一些与现有的解析器,像XML或INI文件,两者都具有解析器.NET。
如果你在上面的格式出售,你可以使用像的莱克斯来生成解析器你。
一个替代方法可能是定义具有属性/集合来容纳所有这些配置数据的一类,并使其[序列化]。然后,您可以填充了一个示例配置,序列化到一个文件,然后你有,你可以手动编辑一个完整的XML配置文件。当你准备使用的配置,只是反序列化XML文件放回在您的应用程序的配置对象。
如果你绝对坚持使用的文件格式,你可以建立一个逐行读取文件中的行,从的“=”左边拉的东西,并把它变成一个字典作为重点对象,一切的右边的“=”作为值的
然而,我必须呼应上述答案即说成与XMLDocument对象沿着使用的XML文档。你看着的LINQ to XML?
嗯,如果我理解你的问题,你想一个方法来组织文件的内容,这样的解析会这么多,你更容易,XML是一个不错的选择,XSD也用于描述你的XML内容文件的LINQ to XML将使它很好地从C#阅读。
如果您使用XML,你可以直接将文件deserialise成一个对象,这样你就不需要在所有解析它。
为什么不二进制序列化你的对象。