Sres.Si - Programiranje & svetovanje

Branje nastavitev iz XML datoteke

objavljeno: 14.11.2012 00:00:00

Za večino apllikacij, ki jih programiramo rabimo tudi nastavitve za različne namene. V glavnem ločimo splošne nastavitve programa in nastavitve za posameznega uporabnika. Razlika je v tem, da moramo, preden preberemo uporabniške nastavitve, uporabnika identificirati saj le tako vemo katere nastavitve je potrebno prebrati. Za shranjevanje nastavitev uporabnika je najbolj primerna baza podatkov, saj po uspešni prijavi uporabnika preberemo njegove nastavitve. Nastavitve za delovanje programa pa ne rabijo identifikacije zato jih lahko shranimo kar v mapo kjer so datoteke za delovanje programa. V kolikor gre za Windows aplikacijo lahko uporabimo tudi Registry.

 

Nastavitve lahko shranimo na različne načine in en od načinov je, da nastavitve shranimo v XML datoteko. Ta način je primeren predvsem za nastavitve programa. Recimo, da želimo z različnih FTP strežnikov pobirati datoteke ob istem časovnem intervalu. Rabimo naslednje podatke:

- naslov FTP strežnika,

- port,

- uporabniško ime,

- geslo,

- ime datoteke na strežniku,

- ime mape na našem računalniku kamor se bodo datoteke shranjevale.

Primer XML datoteke:

<?xml version="1.0" encoding="utf-8" ?>
<transfers>
  <transfer>
    <Host>moj.ftp.si</Host>
    <Port>21</Port>
    <FtpFileName>/Izvoz/podatki.txt</FtpFileName>
    <DestinationFolder>D:\\FTPData\\</DestinationFolder>
    <UserName>janez</UserName>
    <Password>micka</Password>
  </transfer>
  <transfer>
    <Host>sosedov.ftp.si</Host>
    <Port>21</Port>
    <FtpFileName>data.xls</FtpFileName>
    <DestinationFolder>D:\\FTP\\</DestinationFolder>
    <UserName>joze</UserName>
    <Password>treza</Password>
  </transfer>
</transfers>

 

In kako podatke preberemo? V .NET okolju je branje XML datoteke sila preprosto. Uporabimo kar metodo ReadXml od DataSet-a. V kodi zgleda branje takole:

 

//dobimo pot do mape kjer je XML datoteka z nastavitvami

var ExePath = new Uri( System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).LocalPath+"\\";

 

//sestavimo celotno pot do XML datoteke

string XmlDataFileName = ExePath + "ftpdata.xml";

 

//kreiramo DatSet in preberemo XML datoteko DataSet DataSetOut = new DataSet();
DataSetOut.ReadXml(XmlDataFileName);


foreach (DataRow DataRowOut in DataSetOut.Tables["transfer"].Rows)
{
//preberemo posamezne nastavitve

string FtpServerAddress=DataRowOut["Host"].ToString();

....
}