質問

Visual Studio 2008 でゲームを構築していますが、レベルを構築するには、解析する必要がある 2 種類のファイル (実際にはそれ以上ですが、私の質問にとって重要なのはこれら 2 つだけです) があります。レベルの内容を決定し、次のようになります。

LevelName = "サンプルレベル"

Object1Type = "カスタムオブジェクト"

Object1File = "ワイドフロア_DF"

オブジェクト 1 位置 = 600,600

Object2Type = "円"

オブジェクト 2 位置 = 550、500

オブジェクト 2 の質量 = 5

もう 1 つはカスタム オブジェクトのプロパティを決定し、次のようになります。

名称=「ワイドフロア」

質量 = 1

ジオメトリマップ = "ワイドフロア_GM"

IsStatic = true

私は正規表現にあまり詳しくありません(次を読んでください)見た目がラインノイズに似ていて理解しにくいため、私はそれらが好きではありません)そして、大量の正規表現を使用するよりも簡単な方法があるかどうか疑問に思っていました。

編集:何かを忘れていることはわかっていました!私は XML ファイルが大嫌いなので、使いたくないのです (冗長すぎます)。編集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設定ファイルを持つことができます。あなたが設定を使用する準備ができたら、ちょうどあなたのアプリでconfigオブジェクトに戻すXMLファイルをデシリアライズます。

どうしてもそのファイル形式を使用したい場合は、ファイルを 1 行ずつ読み取るオブジェクトを構築し、「=」の左側から要素を取り出して、それをキーとして辞書に入れ、その右側にあるものをすべて入力することができます。値として「=」を使用します。

ただし、XMLDocument オブジェクトとともに XML ドキュメントを使用するという上記の回答を繰り返す必要があります。LINQ to XML について調べたことがありますか?

私はあなたの質問を理解している場合、

だけでなく、あなたはその解析はあなたのためにそんなに簡単になりますので、ファイルの内容を構造化する方法をしたい、XMLは、XMLの内容を記述するためにも、そのための良い選択であり、XSDファイル、XMLへのLINQは、C#からそれを読んで、それは非常に良いようになります。

あなたはXMLを使用する場合は、あなたがすべてでそれを解析する必要がないように、オブジェクトに直接ファイルをdeserialiseすることができます。

なぜバイナリは、あなたのオブジェクトをシリアライズない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top