Domanda

Questa è una C # domanda.

Stavo vagando se qualcuno ha provato memorizzare i loro dati (come file di configurazione, per esempio), nel file * .cs, invece di XML?

Odio davvero XML. L'intera idea di analizzare la struttura html come ogni volta che avete bisogno di alcuni dati sembra stupido.

Ci sono alternative leggeri (come YAML) a XML? Nel mio caso ho effettivamente bisogno di memorizzare alcuni dati per un (gioco) Livello, dove ci sono un sacco di oggetti diversi, tipi di terreno, ecc ... in un file flat, così posso leggere in un secondo momento.

Credo che avrei potuto serializzare il Livello di classe, ma voglio che il file di dati per essere modificabili in qualsiasi editor di testo, ad esempio.

Qualsiasi aiuto sarebbe benvenuto, grazie!

PS:. Per quanto riguarda i file di Cs, ho dimenticato di dire che voglio la possibilità di creare (e salvare) nuovi livelli di gioco, attraverso un editor

È stato utile?

Soluzione

Dal momento che non si desidera utilizzare XML, mi consiglia di creare il proprio formato di file che è testo modificabile.

PROPERTIES
name = First Level
number = 1
END

MONSTERS
Barbarian
pos = (3, 6)
health = 2

Dragon
pos = (10, 10)
health = 8
END

e così via così via per quant'altro è necessario.

La creazione di un parser da soli è davvero semplice. Praticamente appena letto nel file riga per riga. Alla prima linea, si vede il titolo è PROPRIETÀ così si invita a leggere nelle proprietà fino a leggere nella linea END. Stessa cosa per tutte le altre intestazioni si avrebbe. Ci sono molti modi si può variare questo, in modo da poter effettuare la sintassi tuttavia si desidera che sia.

Altri suggerimenti

Ho lavorato nel settore dei videogiochi da anni, e noi utilizzare XML perché ha il miglior supporto strumento. file YAML o Ini sono utilizzati per configurazioni, ma i dati di gioco vengono memorizzati in formato XML. Naturalmente abbiamo normalmente strumenti che convertono XML in codice binario, per i giochi di spedizione, ma durante lo sviluppo e gioco personalizzato XML strumenti di sviluppo semplicemente rocce.

A volte XML è il martello giusto per le vostre esigenze, non collocare pregiudizio su tecnologie solo perché non sono i migliori in alcuni settori (ad esempio Ajax (trasporti) vs Data Definition)

Perché non (xml)?

Non vedo un caso per non usare XML, specialmente se si considera che si desidera memorizzare diversi tipi di informazioni nel file.

Detto questo, per i Cs file avvicinano Suggerisco di strutturare il codice dell'applicazione in modo che si sta caricando il codice che inizializza i dati necessari, invece di cercare i dati nei file. Ti dà un modello chiaro (compilazione + carico), come si sta ora di carico di una classe di inizializzazione, invece di guardare i dati in un file. Aggiungere quanto più è possibile per rendere la configurazione in là il più semplice possibile.

file ini?

[section]
key=value

Dopo aver letto la tua domanda un po 'di più e pensare a questo proposito, XML è molto standard nel settore dei giochi in quanto strutturato, sostiene i bambini, oltre ad essere parte modificabile con qualsiasi editor di testo.

A pochi giochi che vengono in mente che utilizzano i file XML:

World of Warcraft
Crysis
Command & Conquer 3

  

L'intera idea di parsing struttura html-come ogni volta che avete bisogno di alcuni dati sembra stupido.

Se non avete intenzione di utilizzare XML o YAML, si sta andando ad avere per scrivere il proprio parser e validatore, e ora hai inserito il paese dove regna stupidi. di fastidioso come tutti fuori get-XML, ma facendo senza l'ecosistema di strumenti per la manipolazione è peggio.

Ci piace JSON per i file di configurazione - è sorprendentemente versatile

.

E 'facile a portata di mano-edit, facile da analizzare e generare (comprese forti librerie per .NET - sia per la SM e 3a parte), ed è molto potente - una sorta di XML con buoni tipi di dati di base

.

Donno se avete sentito parlare prima, ma si dovrebbe verificare questa cosa YAML. E 'assolutamente cool, con its own homepage e tutto.

Se i dati non è troppo complesso o gerarchico, è possibile memorizzare in un formato di file proprietà in questo modo:

level.name=My Level
level.mapfile=Map.txt

ecc.

D'altra parte, XML è davvero facile da lavorare in C # con la serializzazione (ISerializable o DataContract), non è necessario scrivere alcun codice di analisi, il quadro fa tutto per te. Modifica di XML in un editor di testo non può essere così male!

Se siete disposti a compromessi su XML un po ', si potrebbe utilizzare una NameValueCollection per tenere le voci di configurazione. È quindi possibile serializzare questo utilizzando la serializzazione built-in .NET. Il file XML sarà, ma sarà in un modo davvero semplice, formato facile da modificare, e non dovrete preoccuparvi di qualsiasi tipo conversioni / validazione manuale.

XML anche pensato abbastanza pesante è spesso la scelta migliore per la memorizzazione di dati in un file, e LINQ per XML non rendere la lettura e la scrittura che i dati molto più facile.

Un'altra opzione se i dati diventa piuttosto complessa è quella di usare qualcosa come SQLite, ho usato prima e per l'accesso singolo utente è davvero molto veloce e facile da usare.

Sembra che si desidera un formato binario che può essere modificato in un editor di testo. Purtroppo (fino a quando tutti è fluente con un editor esadecimale) c'è un inevitabile compromesso tra velocità e la facilità di montaggio.

Dal momento che un formato binario è fondamentalmente un imballaggio molto denso del più piccolo insieme di bytes che codificano il vostro stato, sarebbe veloce e facile da analizzare. Un formato XML, d'altra parte, sarebbe facile da modificare. Una possibile soluzione è quella di creare e costruire sia un semplice programma che converte tra di loro. I suoi utenti esperti sarebbero quindi utilizzare questo programma per convertire i livelli in XML, modificarli e poi convertirli indietro.

Se si finisce per utilizzare XML in questo scenario, mi consiglia di utilizzare più di un file Forse uno per ogni oggetto. Sembra che si pensa di avere un mondo complesso. Ha senso per ridurre tutto un po '.

Se si utilizza il sistema di configurazione di .NET, fa il parsing di XML per voi. Vedere Procedura: Creazione di sezioni personalizzate di configurazione utilizzando ConfigurationSection . Anche se è in una sezione ASP.NET, è applicabile a tutto il codice .NET.

Tecnicamente u non hanno bisogno di analizzare XML, basta creare un modello di dati e quindi serializzare in e deserializzare da XML. E 'anche molto semplice da costruire un editor di Visual Studio per il modello di dati di avere un TreeView o ListView visualizzazione di ogni elemento / oggetto nel modello di dati e utilizzare il PropertyEditor per modificare le proprietà dell'oggetto selezionato. Utilizzare OpenFileDialog e SaveFileDialog per consentire all'utente di selezionare il file XML e XmlSerializer per caricare e salvare ur modello di dati. davvero indolore assicuro u! : -)

I work in the games industry and we do use XML pretty much exclusively to do what you describe.
Here's why:
1. It's well understood and is a standard
2. It has excellent support in terms of libraries
3. It can be validated - this is essential when creating data editors
4. It is structured
5. It is human readable and hence easily debuggable

The fact that you say you hate having to trawl it just to get a value suggest to me that you should be using one of the many xml parsers out there. Trust me it's easy and works

People use it for good reasons. Yes it does have it's downsides i.e verbosity etc but believe me the advantages far outway the disadvantages!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top