[ mayana @ 14.08.2008. 17:08 ] @
dakle, bas to:kako da se podaci iz aplikacije (radjene u C# ako je bitno) upisu u xml file? da li xml moze da sluzi umesto baze?
[ MarkoBalkan @ 14.08.2008. 17:38 ] @
gdje se podaci nalaze, u datagriduview-u, u drugim komponentama?

xml je zamišljen kao file pomoću kojeg se razmjenjuju podaci između raznih aplikacija.


[ aleksandarpopov @ 14.08.2008. 20:04 ] @

Google -> C# writting XML
[ Bojan Komazec @ 15.08.2008. 14:55 ] @
XML fajlove uvek mozes koristiti za trajno cuvanje podataka, slicno bazama. Medjutim, za smestanje velikog broja podataka uvek je efikasnije koristiti bazu. Ako pak zelis da sacuvas neki mali set podataka (parametre ili npr. konfiguraciju za rad tvoje aplikacije...) onda ih mozes zapisati u (XML) fajl. Proguglaj malo i naci ces mnogo primera kako to uraditi.

Marko te je pitao gde su smesteni podaci koje bi zeleo da prebacis u XML. To je bitno jer (ako radis sa .NET-om) mnoge klase/kontrole iz njegovih biblioteka imaju implementiranu podrsku za rad sa XML fajlovima. Npr. celokupnu tabelu koju cuva DataTable objekat mozes zapisati u XML fajl pomocu jedne jedine komande!

Takodje, ako zelis da sacuvas stanje nekog objekta (dakle, da zapises u fajl vrednosti njegovih atributa), mozes upotrebiti XmlSerializer klasu.

Postoji mnogo kombinacija kako citati iz/pisati u XML fajl. Koju ces upotrebiti zavisi od strukture podataka koju zelis da exportujes u fajl i objekta gde se oni cuvaju.
[ mayana @ 15.08.2008. 18:02 ] @
ajde da probamo ovako: "application should take a set of files as input parameter and generate XML based manifest file as output one". googlam pravljenje manifest fajla al ne bas uspesno...
[ aleksandarpopov @ 15.08.2008. 20:49 ] @
Evo neki VB.NET code na ovom linku : http://www.planet-source-code....sp?txtCodeId=515&lngWId=10
[ Aleksandar Ružičić @ 15.08.2008. 21:20 ] @
Citat:
mayana: ajde da probamo ovako: "application should take a set of files as input parameter and generate XML based manifest file as output one".


- set kojih/kakvih fajlova?
- kako treba manifest fajl da ti izgleda?


odgovori na oba ova pitanja i napisacu ti primer :)
[ mayana @ 15.08.2008. 21:46 ] @
aplikacija\utility treba da sluzi za auto update. aplikacija se konektuje negde i skida manifest file koji potom razlozi, proverava da li postoji negde nova verzija, onda skida te nove fajlove i njih potom ugradjuje u jedan novi manifest koji ce da sluzi za auto update. tako nekako...
[ Aleksandar Ružičić @ 16.08.2008. 14:59 ] @
tako nekako... :) ja sam mislio da mi das primer tog manifest fajla, ali evo dacu ti primer kako da citas/pises jedan xml fajl recimo ovakve strukture:
Code:

<?xml version="1.0" encoding="utf-8" ?>
<filelist>
    <file version="0.0.1">fajl1.ext1</file>
    <file version="1.0.2">fajl2.ext2</file>
    <file version="0.1.1">fajl3.ext3</file>
</filelist>


dodaj ovo na pocetak fajla:
Code:

using System.Linq;
using System.Xml.Linq;


evo primer citanja xmla (ispisuje u konzolu)
Code:

XElement root = XElement.Load( "input.xml" );

if ( root.Name != "filelist" ) return; // provera...

// citanje node by node (cita <file> cvorove)
foreach ( XElement file in root.Elements( "file" ) )
{
    XAttribute version;  // version="" atribut

    if ( ( version = file.Attribute( "version" ) ) != null )
    {
        Console.WriteLine( file.Value + ", version " + version.Value );
    }
    else
    {
        // version="" atribut ne postoji, ubaci neku logiku ovde ako je potrebno...
    }
}


a ovako kreiras xml fajl:
Code:

XElement filelist = new XElement( "filelist" );

filelist.Add( new XElement( "file", new XAttribute( "version", "1.0" ), new XText( "ime fajla1.ext" ) ) );
filelist.Add( new XElement( "file", new XAttribute( "version", "1.1" ), new XText( "ime fajla2.ext" ) ) );
filelist.Add( new XElement( "file", new XAttribute( "version", "2.0" ), new XText( "ime fajla3.ext" ) ) );
filelist.Add( new XElement( "file", new XAttribute( "version", "0.5" ), new XText( "ime fajla4.ext" ) ) );

filelist.Save( "output.xml" );


btw ne mora da se koristi System.Xml.Linq ali je meni nekako lakse tako :)

ako ti nesto nije jasno pitaj, nisam imao sad bas vremena da objasnjavam sta se tacno desava ali kod je jednostavan pa moze iz njega da se vidi logika, ako ne onda cu veceras napisati neko malo objasnjenje...
[ Eurora3D Team @ 17.08.2008. 14:41 ] @
@mayana "tako nekako" kao objasnjenje probleme u programiranju ne znaci nista :)
Mozda programiranje nekad i jeste apstraktno ali shvatanje onoga sto treba da se uradi i pisanje koda su vrlo konkretne stvari ...
Koliko vidim iz opisa, aplikacija je pilicno slozena, tako da bi morala de problim opises mnogo detaljnije da bi neko mogao da ti uradi primer koji moze da ti koristi ...
[ mayana @ 17.08.2008. 19:50 ] @
ok,ok, nije bitno. ono sto meni treba je source code microsoft-ove aplikacije Manifest Utility verzija u c#, to sam shvatila ovih dana trazeci resenje po netu. sem ako nemate to, ne mozete mi pomoci. hvala Aleksandru Ruzicicu na pomoci ali njegov kod na mom kompjuteru ne radi. visual studio koji ja imam je vs.net 2003, verzija sa faksa i kad tamo ukucam taj kod, prijavi da ne zna sta je system.linq, sta je xelement itd. tako da hvala, ali nije mi pomoglo. nema veze, sad je kasno, istice mi rok za zadatak. kad sama budem bolje shvatala sta mi je zadatak, bolje cu i vama objasniti. pozdrav
[ Aleksandar Ružičić @ 17.08.2008. 21:24 ] @
pa ako koristis 2003 onda je to .net 2.0 a linq se pojavio tek sa 3.5, tako da nije ni cudo sto ti ne radi...

rekoh da moze i bez xml.linq namespace-a, tj bez XElement, XAttribute i ostalih X* objekata. potrazi samo primere za XmlReader i XmlWritter klase na googlu...
[ mayana @ 17.08.2008. 22:12 ] @
ustvari, imam .net 1.1. skapirala sam da je do frameworka, gledajuci o linqu na netu. hvala svakako. cackacu jos malo pa odustajem.
[ Aleksandar Ružičić @ 17.08.2008. 23:34 ] @
XmlReader/XmlWritter i implemntacije tih klasa XmlTextReader/XmlTextWritter su dostupne od 1.0 frameworka (znaci od pocetka) tako da samo nadji primere za te klase (pogledaj u msdnu) i resices problem...
[ toxi_programer @ 18.08.2008. 11:42 ] @
Ja bih uradio na sledeći način... Napravim klasu i postavim joj atribut Serializable. U toj klasi ubacim sve promenljive koje mi trebaju. Evo prost primer:
Code:

[Serializable]
public class Covek
{
    public string Ime;
    public string Prezime;
    public DateTime DatumRodjenja;

    public static Covek Load(string lokacijaFajla)
    {
        XmlSerializer xSer = new XmlSerializer(typeof(Covek));
        FileStream fs = new FileStream(lokacijaFajla, FileMode.Open);
        Covek ret = (Covek)xSer.Deserialize(fs);
        fs.Close();
        return ret;
    }

    public bool Save(string lokacijaFajla)
    {
        XmlSerializer xSer = new XmlSerializer(typeof(Covek));
        FileStream fs = new FileStream(lokacijaFajla, FileMode.Create);
        try
        {
            xSer.Serialize(fs, this);
        }
        catch (Exception pe)
        {
            System.Windows.Forms.MessageBox.Show("GREŠKA" + pe.Message);
            return false;
        }
        fs.Flush(); fs.Close();
        return true;
    }
}


Tako uvek radim kad treba neke podatke da snimim na HD, a ako ih nema mnogo (npr. opcije i tako to).

Evo našao sam pametan tekst o tome na MSDN-u: http://msdn.microsoft.com/en-u...rialization.xmlserializer.aspx