Deserializacja wczytanie wszystkich dzieci rodzica

0

Cześć
Chciałam pobrać w prosty sposób wszystkie dzieci danego rodzica
napisałam coś takiego:

 
XmlNodeList node = xml.GetElementsByTagName("Rodzice"); //szukaj dzieci dla glowej galezi 

            foreach (string dzieci in node.Item(0).ChildNodes.ToString()) 
            {
                ritchboxtext1 = ritchboxtext1 + dzieci; 
            }

Plik XML ma wygląd mniejwięcej

<rodzice> <dzicko1> <parametrydziecka>parametr<parametrydziecka> </dzicko1> <dzicko2> <parametrydziecka>parametr<parametrydziecka> </dzicko2> <dzicko3> <parametrydziecka>parametr<parametrydziecka> </dzicko3> </rodzice>

Proszę o poprawienie mojego nie działającego kodu

0

Ale co nie działa? Napisz co się dzieje a czego oczekujesz. Może trzeba pokazać więcej kodu.
Jak na razie dostrzegam dwa błędy w kodzie które przerwą kompilację. O nich podpowiada ci sam kompilator i mówi co i gdzie jest nie tak.

0

Mój pełny kod wygląda tak:

private void simpleButton1_Click(object sender, EventArgs e)
        {
            var xml = new XmlDocument();
            xml.Load(Program.XML);
            
           XmlNodeList node = xml.GetElementsByTagName("Rodzice"); //szukaj dzieci dla glowej galezi 
 
            foreach (string dzieci in node.Item(0).ChildNodes.ToString()) 
            {
                ritchboxtext1.Text = ritchboxtext1.Text + dzieci; 
            }

        }
 

kompiluje się ale nie zwraca prawidłowego wyniku.
Tak jak pisałam, chciałabym, aby linijka pod linijką wpisało mi wszystkich dzieci gałęzi Rodzice

0

Skoro się kompiluje to jest to inny kod niż podajesz tutaj. Nadal nie podajesz jaki wynik zwraca a jakiego wyniku oczekujesz.

0

zwraca za pomocą ritchboxtext1 = ritchboxtext1 + dzieci;
a oczekuje wypisanie w ritchboxtext1 po kolei wszystkich dzieci elementu Rodzice

0

Nadal nie podałaś jaki kod kompilujesz i jaki jest efekt jego działania. Już trzeci raz nie ma sensu pytać. W tym wypadku, niestety, nie jestem w stanie Ci pomóc inaczej niż dopingując. Tak więc trzymam kciuki i pozdrawiam.

0

Kod podałam powyżej? co mam jeszcze podać? nie rozumiem co jeszcze chciałbyś zobaczyć. Mógłbyś mówić jaśniej?
to co mi się wyświetla to "System.Xml.XmlChildNodes"

W zalaczniku caly projekt...

0

Fakt...
Załącznik się nie dodał, nie mogę dodać żadnego załącznika - nie wiedzieć czemu?

podaje link:
http://maxshare.pl/download.php?dl=6536b7c22a82387b029b4b4a4c8b4169

0

No wreszcie udało ci się podać kod i wynik działania.

            foreach (char dzieci in node.Item(0).ChildNodes.ToString()) 
            {
                ritchboxtext1.Text = ritchboxtext1.Text + dzieci; 
            }

Najpierw pobierasz kolekcję dzieci (node.Item(0).ChildNodes). Następnie zamieniasz tą kolekcję na łańcuch (.ToString()). Później iterujesz znak po znaku tego łańcucha i dodajesz je kolejno do wyniku. Nie tak to powinno wyglądać. Metoda ToString wywołana na kolekcji dzieci nie robi nic innego jak zwraca nazwę klasy w postaci napisu ("System.Xml.XmlChildNodes"). Jest to domyślne zachowanie metody ToString. Inne klasy implementują ją na swój sposób ale nie XmlChildNodes ponieważ konwersja z XmlChildNodes do string raczej nie ma większego sensu.

Powinnaś iterować po kolejnych dzieciach:

foreach (XmlNode dziecko in node.Item(0).ChildNodes) ...

i zamieniać każde dziecko z osobna na łańcuch.

0
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace Dzieci
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void simplebutton1_Click(object sender, EventArgs e)
        {
            var xml = new XmlDocument();
            xml.Load(Program.XML);

            XmlNodeList node = xml.GetElementsByTagName("Rodzice"); //szukaj dzieci dla glowej galezi 

            foreach (XmlNode dzieci in node.Item(0).ChildNodes)
            {
                ritchboxtext1.Text = ritchboxtext1.Text + dzieci; 
            }
        }
    }
}

To również zwraca mi System.Xml.XmlChildNodes a nie dzieci ;(

1

Oj rany rany...

foreach (XmlElement dzieci in node.Item(0).ChildNodes)
{
	ritchboxtext1.Text = ritchboxtext1.Text + dzieci.InnerText;
}
0

Program zwraca mi parametry dzieci dziecka Rodzice, kolokwialnie mówiąc zwraca atrybuty wnuków,ja natomiast chce pozyskać tylko nazwy dzieci (bez żadnych atrybutów, ani elementów wnuki) elementu Rodzice

0

Ej, naprawdę. Jesteś kobietą i do tego jeszcze młodą. Ja to rozumiem, że możesz nie wiedzieć, iż jest taka świetna dokumentacja dla .NETa (i nie tylko!) i to nawet stworzona przez Microsoft. Tutaj jest: kliknij mnie, a pokażę Ci coś fajnego! Ja rozumiem, że może się nie chcieć czasami, jednak za każdym razem?! Z każdym błahym problemem przychodzisz na forum i się pytasz, jak zrobić to, jak zrobić tamto. OK, czasami też się spytać muszę jak czegoś nie ogarniam, ale wcześniej poszukuję rozwiązania problemu samodzielnie. A nuż ktoś miał podobnie jak ja? A może ktoś przekazał już tę wiedzę i niepotrzebnie mnożyć odpowiedzi? Reasumując, pomimo, że jesteś młodą kobietą (mam nadzieję, że nick nie kłamie), niedoświadczoną jeszcze, to proszę Cię: poświęć choć trochę swojego czasu, zanim poprosisz o marnowanie naszego wolnego. Pomimo, bo zwykle robię to za taką kobietę jak Ty, jednak na swoje usprawiedliwienie mam jej mniejsze umiejętności ;)

PS. Rozwiązanie Twojego problemu (chyba, że źle zrozumiałem opis w poprzednim poście) jest tutaj: http://msdn.microsoft.com/en-us/library/system.xml.xmlelement.name.aspx

Pozdrawiam i życzę powodzenia z całego serca.

0

Twój przykład mi nie pomógł. Oczywiście, że zanim napisze zawszę poszukam w necie. Prosiłam nawet o pomoc kolegę który pracuje jako programista, ale też nie potrafił mi pomoc.
No trudno... postaram się wyciszyć na forum... na razie

0

Nie było w moim zamiarze, abyś się nie udzielała i nie prosiła o pomoc, ale abyś zadbała o merytoryczny poziom zadawanych pytań i ewentualnych odpowiedzi. Rozumiem, że problem masz nadal, więc opisz go dokładniej. Napisz, co konkretnie chcesz uzyskać i wskaż, jakich dokładnie wyników oczekujesz. Czyli dla takiego XML'a:

<Rodzice>
	<dziecko1>
		<parametrydziecka>parametr1</parametrydziecka>
	</dziecko1>
	<dziecko2>
		<parametrydziecka>parametr2</parametrydziecka>
	</dziecko2>
	<dziecko3>
		<parametrydziecka>parametr3</parametrydziecka>
	</dziecko3>
</Rodzice>

Co ma zostać wypisane?
Uczulam Cię, abyś dokładnie spojrzała na ten kod powyżej.
Czy takie coś:

dziecko1
dziecko2
dziecko3

?

Jeśli nie, to co dokładnie?

Pozdrawiam.

0

poczytaj o xpath. Szybciej. też zjadłem zęby na tym :)

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