Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# xml config file read/write

[es] :: .NET :: C# xml config file read/write

[ Pregleda: 182 | Odgovora: 0 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksandar Ružičić
Aleksandar Ružičić
Senior Developer, Haragei d.o.o
Beograd - Čačak

Član broj: 26939
Poruke: 2010
*.dynamic.adsl.itsisp.net.

Jabber: krcko@haragei.com
Sajt: krcko.haragei.org


Profil

icon C# xml config file read/write18.06.2008. u 20:29

posto je upitanju prvo parce koda koje sam uradio u c#-u odlucio sam da to okacim ovde :) posto znam da ce kod mene na kompu to da se izgubi relativno brzo a i mozda bude od koristi nekome ovde (od pocetnika za pocetnike)...

elem, kao sto rekoh pocetnik sam u c# programiranju (i .netu uopste) i igram se sa njim vec 2 dana... ja kada odlucim da ucim neki novi jezik izaberem jednu od aplikacija sa moje (povece) want-todo liste i pocnem da je pravim u tom jeziku, aplikacija koju sam poceo da radim izmedju ostalog zahteva (kao i svaki malo veci programcic) i cuvanje/ucitavanje podesavanja, registry sam odma' odbacio, ini fajlovi su malko zastareli da bih ih koristio u .net aplikaciji i jedino sto je ostalo (a da ne moram da pisem svoj parser) je xml.

dakle evo primera jednog konfiguracionog fajla:
Code:

<?xml version="1.0" encoding="utf-8"?>
<dssXML version="1.0">
  <config>
    <items>
      <languagefile type="string">lang/english.xml</languagefile>
    </items>
    <section name="studio">
      <items>
        <average type="float">10.73</average>
        <bla type="int">42</bla>
        <visible type="bool">true</visible>
      </items>
      <section name="placement">
        <section name="position">
          <items>
            <x type="int">10</x>
            <y type="int">80</y>
          </items>
        </section>
        <section name="size">
          <items>
            <h type="int">768</h>
            <w type="int">1024</w>
          </items>
        </section>
      </section>
    </section>
  </config>
</dssXML>

dakle root je <dssXML> ovo dss je skracenica naziva tog programcica (nema veze sa onim na sta vas prvo asocira... puj puj puj) a u <config> elementu se nalaze podesavanja, config fajl se sastoji od sekcija (<config> je "root sekcija") i svaka sekcija moze da ima koliko god vam je potrebno <section> (dakle podsekcija) i <items> (u kojima se nalaze podesavanja) elemenata, unutar <items> elementa svaki element predstavlja neku vrednost: <naziv type="tip">vrednost</naziv>, tip moze biti int za celobrojne vrednosti (int), float za floating-point vrednosti (double), bool za true/false vrednosti (bool) (vrednosti true, yes, on i 1 se prevode u true sve ostalo daje false) ili string za string vrednosti (string).

Config.cs definise Config klasu (nema namespace) koja cita/pise ovakav format,

metoda za ucitavanje je void Load( string filename )
a za cuvanje je void Save(string filename[, string ver]) (drugi parametar je opcioni, tj postoji overload sa samo jednim parametrom), ver parametar (ukoliko je prosledjen i nije nullstring) ce biti zapisan kao version atribut root elementa (1.0 u gornjem primeru), ova vrednost se takodje moze podesiti preko version clana klase

takodje pre poziva Load fje je potrebno promeniti rootTag clan (default je "appdata") u primeru gore podesen je na "dssXML", ovo je takodje moguce proslediti i kroz konstruktor koji izgleda ovako:
public Config([string root[, string filename]]) (oba parametra su opciona - postoje 3 overloada konstruktora)

metoda za citanje podataka je object get(string id[, object defaultValue]),
id je string oblika [section.[section.[section...]]]name i case-insesitive je

metoda za pisanje podataka je void set(string id, object value)

postoje i indexeri koji predstavljaju "precice" za get i set metode, znaci umesto config.get("secion.name") mozete pisati config["section.name"] umesto config.set("section.name", 123) mozete pisati config["section.name"] = 123...

to je ja mislim to... e da za ovo vam treba fwk 3.5 posto sam se igrao sa linqom :)


e da, ukoliko je neko od malo iskusnijih c#/.net developera dokon zamolio bih ga da proceslja kod i da mi kaze gde sam napravio gresku i koju (siguran sam da ima pocetnickih gresaka)...
Prikačeni fajlovi
18.06.2008. u 20:29 

[es] :: .NET :: C# xml config file read/write

[ Pregleda: 182 | Odgovora: 0 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.