Frage

Ich bin ein Spiel in Visual Studio 2008 und um Ebenen zu bauen bauen, muss ich zwei Arten von Dateien (mehr als das tatsächlich aber diese beiden sind die einzigen, die wichtig für meine Frage) Ich brauche zu analysieren. Man wird den Inhalt einer Ebene diktieren und so etwas wie folgt aussehen:

level = "Sample-Ebene"

Object1Type = "CustomObject"

Object1File = "WideFloor_DF"

Object1Position = 600.600

Object2Type = "Circle"

Object2Position = 550, 500

Object2Mass = 5

etc.

Die andere, die Eigenschaften für benutzerdefinierte Objekte diktieren, und in etwa so aussehen:

Name = "Wide Floor"

Masse = 1

GeometryMap = "WideFloor_GM"

IsStatic = true

etc.

Ich bin nicht sehr vertraut mit regulären Ausdrücken (sprich: ich mag sie nicht, weil der Blick zu sehr wie Leitungsrauschen leicht zu verstehen)? Und ich frage mich, ob es eine einfachere Methode ist, als Tonnen von regulären Ausdrücken mit

edit: Ich wusste, ich habe etwas vergessen! Ich hasse wirklich XML-Dateien, so dass ich würde es vorziehen, wirklich nicht, sie zu benutzen (waaaaaaaay zu ausführlich für mich). Bearbeiten 2: Ich mag das Format i habe kommen mit und würde nicht ändern bevorzugen

.
War es hilfreich?

Lösung

Was ist XML-Dateien mit? Sie können sie leicht XMLReader und XMLWriter Objekte verwenden und müssen nicht beschäftigen sich mit Regex überhaupt.

Lesen und Schreiben
<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>     

Andere Tipps

Wenn Sie vorhaben, Ihre Dateien in für Menschen lesbaren Format sowieso haben, warum nicht XML verwenden?

Wenn Sie die Kontrolle über das Dateiformat haben Sie vielleicht etwas mit einem vorhandenen Parser versuchen, wie XML oder INI-Dateien, von denen beiden Parser in .NET hat.

Wenn Sie auf dem obigen Format verkauft sind, können Sie ein Tool wie Lex Ihren Parser für Sie zu generieren.

Ein alternativer Ansatz könnte sein, eine Klasse zu definieren, die Eigenschaften / Sammlungen hat alle diese Konfigurationsdaten zu halten und macht es [Serializable]. Anschließend können Sie eine Beispielkonfiguration bevölkern aus, serialisiert in einer Datei, und dann haben Sie eine komplette XML-Konfigurationsdatei, die Sie von Hand bearbeiten. Wenn Sie bereit sind, um die Konfiguration zu verwenden, nur die XML-Datei deserialisieren zurück in das Config-Objekt in Ihrer Anwendung.

Wenn Sie unbedingt darauf bestehen, dass die Datei-Format verwenden, können Sie ein Objekt erstellen, die die Datei Zeile für Zeile liest, die Dinge von der linken Seite des ‚=‘ ziehen und es in ein Wörterbuch als Schlüssel und alles für die Indienststellung rechts neben der ‚=‘ als Wert.

Allerdings muß ich die oben genannten Antworten Echo, die ein XML-Dokument zusammen mit einem XMLDocument-Objekt verwenden zu sagen. Haben Sie sich in LINQ to XML?

Nun, wenn ich Ihre Frage verstehen Sie einen Weg mögen den Inhalt der Dateien so zu strukturieren, dass das Parsen so sein wird für Dich viel einfacher, XML ist eine gute Wahl für das, und XSD auch zur Beschreibung der Inhalte Ihrer xml Dateien, LINQ to XML wird es sehr gut machen es von C # zu lesen.

Wenn Sie XML verwenden Sie die Dateien direkt in ein Objekt deserialise können, so dass Sie es überhaupt nicht analysieren müssen.

Warum nicht binär serialisieren Ihre Objekte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top