Wczytywanie xmla

0

Witam. Mam problem ze zrobieniem buttona który wczyta mi xmla i przekaże mi go do listboxa.

mój xml wygląda tak :

<?xml version="1.0" encoding="utf-8"?>
<Informacje xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Imie>Michal</Imie>
  <Nazwisko>Kowalski</Nazwisko>
  <Grupa>BUD301</Grupa>
  <Index>7777</Index>
</Informacje>

Męczę sie z tym juz parych ładne godzin i nie moge tego ogarnąć czytałem juz chyba wyszstko ale widocznie jestem debilem ;/ . Móglbym ktos pomóc?

private void button2_Click(object sender, EventArgs e)
        {
            XmlReader reader = XmlReader.Create("C:\\Users\\Michal\\Desktop\\Moj program\\MojProgram\\MojProgram\\bin\\Debug\\data.xml");
            while (reader.Read())
                if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "Informacje"))
                {
                    if (reader.HasAttributes)
                    {
                        {
                            listBox1.Items.Add(reader.GetAttribute("Data1") + reader.GetAttribute("Data2"));
                        }

                    }
                }


        }
 

Tyle udało mi sie zklecić móglby ktos poprawic tak żeby to działało? żeby mi po prostu wyswietlalo w listboxie obok siebie te dane czyli imie , naziwsko, grupa , index.
Z gory uprzejmię dziękuje , z poważaniem Michał.

0

Dobra poprawka w moim kodzie to tak powinno wygladac.

listBox1.Items.Add(reader.GetAttribute("Imie") + reader.GetAttribute("Nazwisko"));
0

Zamiast tego

XmlReader.Create("C:\\Users\\Michal\\Desktop\\Moj program\\MojProgram\\MojProgram\\bin\\Debug\\data.xml");

mógłbyś dać po prostu XmlReader.Create("data.xml");

Czyli już działa wszystko?
0
dam1an napisał(a):

Zamiast tego

XmlReader.Create("C:\\Users\\Michal\\Desktop\\Moj program\\MojProgram\\MojProgram\\bin\\Debug\\data.xml");

mógłbyś dać po prostu XmlReader.Create("data.xml");

> Czyli już działa wszystko?


Niestety , ale duzo to nie zmienilo .

jak  chce wczytac w listobxa to jest takie cos  ![973381b150.png](//static.4programmers.net/uploads/attachment/973381b150.png)

czyli niby cos sie dodaje puste jakby.
0

Ponieważ próbujesz pobrać atrybuty a to są elementy.
Nie wiem jak używać XmlReadera ale mogę pokazać jak to zrobić w LINQ to XML.

XElement xel = XElement.Load("data.xml");
listBox1.Items.Add(xel.Element("Imie") + xel.Element("Nazwisko"));

Jeśli ten xml będzie wyglądał tak jak wyżej, bo jeśli będzie więcej elementów Informacje to należało by to zrobić inaczej.

0

jak zrobie tak to niby przechodzi dfcfc906b1.png

ale jezeli zrobie tak : 81d15f8d70.png

A po przejsciu jak na 1 screenie to wyglada tak ;/ ff912e700d.png

0

Sorry, bo ty chcesz chyba coś takiego zrobić:

xel.Elements().ToList().ForEach(e => listBox1.Items.Add(e.Value));

A wcześniej nie działało bo myślałem że ty chcesz wyświetlić w ListItem słowo MichałKowalski, a to by trzeba było zrobić ToString na tym obiekcie.

0

może tak :)

StreamReader r = new StreamReader("dane.xml");
XmlSerializer serializer = new XmlSerializer(typeof(osoba));
osoba p = (osoba)serializer.Deserialize(r);
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1