IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:9.11.2012 18:46

Ahoj, mám problém se zápisem do XML. Potřebuju více "StartElemntů". Kód vypadá takto

List<Uzivatel> uzivatele = new List<Uzivatel>();
            uzivatele.Add(new Uzivatel(15, "Pavel",5000));
            uzivatele.Add(new Uzivatel(26, "Honza",2000));
            uzivatele.Add(new Uzivatel(39, "Klara",8000));
            uzivatele.Add(new Uzivatel(39121, "POLJ", 8000));
            uzivatele.Add(new Uzivatel(39, "Kldadasdaa", 8000));
            uzivatele.Add(new Uzivatel(354549, "gjhjhfjagarasada", 8005454));

            // nastavení XMLWriteru
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;

            // Zápis uživatelů
            using (XmlWriter xw = XmlWriter.Create(@"soubor.xml", settings))
            {
                xw.WriteStartDocument(); // hlavička
                xw.WriteStartElement("uzivatele"); // otevření kořenového elementu uzivatele

                // zápis jednotlivých uživatelů
                foreach (Uzivatel u in uzivatele)
                {
                    xw.WriteStartElement("uzivatel");
                    xw.WriteAttributeString("vek", u.vek.ToString());
                    xw.WriteAttributeString("jmeno", u.jmeno);
                    xw.WriteAttributeString("plat", u.plat.ToString());
                    xw.WriteEndElement();
                }
                xw.WriteEndElement(); // uzavření kořenového elementu

                xw.WriteStartElement("Date");
                DateTime dat = new DateTime(2012, 10, 12);
                xw.WriteAttributeString("D", dat.ToShortDateString());
                xw.WriteEndElement();
                xw.WriteEndDocument(); // konec dokument
                xw.Flush();
            }

Ovšem toto hodí error u

xw.WriteStartElement("Data");

. Kód sám o sobě nemá smysl. Pouze zkouším zápis.
Díky za odpověď

Editováno 9.11.2012 18:47
Odpovědět
9.11.2012 18:46
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Petr Nymsa
matesax:9.11.2012 19:03

Omlovám se Sdracovi, je-li tu návod, ale:

http://www.dotnetperls.com/xmlwriter

 
Nahoru Odpovědět
9.11.2012 19:03
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Kit:9.11.2012 20:16

V XML nemůžeš mít víc než jeden kořenový element.

Příště sem hoď i tu chybovou hlášku, ať to nemusím luštit z kódu.

Nahoru Odpovědět
9.11.2012 20:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Petr Nymsa
David Hartinger:9.11.2012 21:02

Návod je v sekci C#, podsekci "Práce se soubory", jmenuje se "Úvod do XML a zápis SAXem". Už nevím, jak transparentněji by se to dalo udělat, aby to matesax našel :)

Ten kód je z toho vykopírovaný, ale článek jsi evidentně nečetl, měl bys to udělat.

Nahoru Odpovědět
9.11.2012 21:02
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:9.11.2012 21:15

Makám jako mezek (http://kos.lusorion.com/) - popadl jsem nejrychlejší řešení...

 
Nahoru Odpovědět
9.11.2012 21:15
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:9.11.2012 21:20

Hlavně to musíš udělat tak, aby to našel i Google před dotnetperls :)

Editováno 9.11.2012 21:21
Nahoru Odpovědět
9.11.2012 21:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:9.11.2012 21:23

Zadal jsem do Google "c sharp xml zápis" a jsem na 6. místě. Vzhledem k faktu, že Google novou doménu zaindexoval teprve nedávno, tak je to hezký výsledek. Pokud to hledá ve světě, tak dotnetperls asi nepředběhnu a ani to dělat nechci :)

Nahoru Odpovědět
9.11.2012 21:23
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:9.11.2012 21:26

Stejně z toho není úplně jasná chyba, které se dopustil Petr Nymsa. Porušil pravidlo, že kořenový element dokumentu XML musí být právě jeden.

Editováno 9.11.2012 21:28
Nahoru Odpovědět
9.11.2012 21:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:10.11.2012 10:12

Díky, zdejší tutoriál jsem četl a byl jsem nepozorný. Je správně napsáno že musí mít jenom jeden kořenový element. Chybu to hlásilo právě ohledně více kořenů. No příště nž se zeptám, raději si to ještě jednou přečtu :)

Nahoru Odpovědět
10.11.2012 10:12
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.