[C#][XML]Odczyt

0

Witajcie forumowicze.

Mam następujący plik XML:

 <program>
  <daneogolne>
    .....
  </daneogolne>

  <danepodstawowe>
  <dana1>
   <wartosc1>1</wartosc1>
   <wartosc2>2</wartosc2>
   <wartosc3>3</wartosc3>
  </dana1>  
  <dana2>
   <wartosc1>1</wartosc1>
   <wartosc2>2</wartosc2>
   <wartosc3>3</wartosc3>
  </dana2>
 </danepodstawowe>

 </program>
      XmlDocument doc = new XmlDocument();
                doc.Load(sce);

                XmlReaderSettings ust = new XmlReaderSettings();
                ust.ConformanceLevel = ConformanceLevel.Auto;
                ust.IgnoreWhitespace = true;
                ust.IgnoreComments = true;

                XmlNodeReader noderdr = new XmlNodeReader(doc);
                XmlReader reader = XmlReader.Create(noderdr, ust);
                while (reader.Read())
                {
                    MessageBox.Show("tutaj");
                } 

Chcę w jednym MessageBox wyświetlić wszystkie wartości danych (wartosc1, wartosc2, wartosc3). Mam 2 dane więc chcę dwa razy ujrzeć MessaBox. Liczba danych jest dynamiczna, więc może być ich 5.
Jak to zaprogramować?

0

najpierw znalezc tag danepodstawowe
a pozniej po wszystkich jego nodach iterujesz, dla kazdego z nich bierzesz wartosci jego childnode i wyswietlasz w messagebox

0

Podaj jakiś przykład. Jak możesz - będę wdzięczny ;)

Nie mogę odczytać. Jak równorzędnie odczytać name i value. Robią mi się osobne MessageBox.

0

Zainteresuj się klasą XDocument (zamiast XmlDocument). Jest dużo wygodniejsza.

0
XmlDocument doc = new XmlDocument();
            XmlNode root = doc.SelectSingleNode("/danepodstawowe");
            String message = "";
            
            foreach (XmlElement nod in root.ChildNodes)
            {//czyli dla każdego dane*
                foreach (XmlElement war in nod.ChildNodes)
                {//czyli dla każdego wartosc*
                    message = message + war.Value + " ";
                }            
                MessageBox.Show(message);
                message = "";
            }
            

Pisane z palca i nie testowane, ale mniej więcej ukazuje ideę przemieszczania się po XmlDocument.
Z kolekcji ChildNodes można też pobierać dane poprzez:
XmlElement el = root.ChildNodes["dane1"];
na przykład.

Edit:
Przerobiłam tak, że wyświetla się jeden MsgBox dla jednego dane*. Żeby wyświetlało to co trzeba, to już chyba sobie poradzisz (kwestia tego, co zapisujesz sobie do stringa).

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