Entwickler-Ecke

IO, XML und Registry - Alle "Oberkategorien" vom XML ausgeben


alcedo707 - Fr 21.10.11 21:19
Titel: Alle "Oberkategorien" vom XML ausgeben
Hallo,

Ich habe eine Test-XML gemacht, und die schaut so aus:


XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?xml version="1.0" encoding="utf-8"?>
<DATEN>
  <alcedo707>
    <pass>meinpass123</pass>
  <alcedo707>
  <maxmust123>
    <pass>top9secret</pass>
  <maxmust123>
  <darkness686>
    <pass>dekla</pass>
  </darkness686>
</DATEN>


Ich möchte alle Usernamen (Auch die, die dazukommen werden) in eine Array speichern.

Also in der gespeicherten Array sollte dann alcedo707, maxmuster123, darkness686 stehen.


Ich habe versucht, die kategorien aufzurufen und auszugeben mit



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
                XDocument xml = XDocument.Load(offnen);

                var query = from p in xml.Elements("DATEN")
                            select p;

                foreach (string record in query)
                {
                    MessageBox.Show(record);

                }


Aber als ergebnis kommt alle was in DATEN steht mit den wert von <pass> in einer schlange ohne leerabstände..

Mfg

ps: ich dachte das gehört zu LINQ aber erst jetzt habe ich gesehen, das es auch ein XML bereich gibt... mist


Moderiert von user profile iconTh69: Topic aus Datenbanken (inkl. ADO.NET) verschoben am Sa 22.10.2011 um 10:10


Th69 - Sa 22.10.11 10:18

Hallo alcedo707,

der Datentyp in deiner Schleife ist falsch, denn XDocument.Elements() liefert ein XElement zurück (du erhältst bisher anscheinend den implizit umgewandelten ToString()-Wert zurück):

C#-Quelltext
1:
2:
3:
4:
foreach (XElement record in query)
{
    MessageBox.Show(record.Name);
}


alcedo707 - Sa 22.10.11 19:16

Danke ! mit


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
XDocument xml = XDocument.Load(offnen);
var query = from p in xml.Elements("DATEN").Elements()                           
            select p;                

foreach (XElement record in query)                
{                    
    MessageBox.Show(record.Name);               
}


klappte es dann.