Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

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
Redaktor
Avatar
 
Nahoru Odpovědět 9.11.2012 19:03
Avatar
Kit
Redaktor
Avatar
Odpovídá na Petr Nymsa
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

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

 
Nahoru Odpovědět 9.11.2012 21:15
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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
Redaktor
Avatar
Petr Nymsa:

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.