Entwickler-Ecke
IO, XML und Registry - XML an DataGridView
WalterZ - Do 10.03.11 23:55
Titel: XML an DataGridView
Hallo,
der nachfolgende Code zeigt mir ein Ergebnis im DataGridView an, allerdings noch nicht das gewünschte:
C#-Quelltext
1: 2: 3:
| XElement xElement = XElement.Load("INDEX.xml"); dataGridView1.DataSource = (from el in xElement.Descendants() select new { el.FirstNode, el.NextNode, el.LastNode}).ToList() ; |
Meine Fragen:
1. Was muss ich verändern, damit ich z.B. el.FirstNode.Name oder el.First.Node.Value erhalte ?
So wie hier notiert gehts auf jeden Fall nicht.
2. Wie erreiche ich auch die anderen Knoten nach NextNode und vor LastNode ?
Danke für eine Antwort
Walter
Moderiert von
Kha: C#-Tags hinzugefügt
Kha - Fr 11.03.11 02:54
WalterZ hat folgendes geschrieben : |
der nachfolgende Code zeigt mir ein Ergebnis im DataGridView an, allerdings noch nicht das gewünschte: |
Entschuldigung, aber ist die Fragestellung dein Ernst? Wenn uns sowohl Ist- als auch Soll-Zustand verschwiegen wird, sind wir als Antwortgeber ziemlich aufgeschmissen.
WalterZ hat folgendes geschrieben : |
2. Wie erreiche ich auch die anderen Knoten nach NextNode und vor LastNode ? |
el.Elements() sind alle Kinder als
IEnumerable<XElement>.
WalterZ - So 13.03.11 02:40
Hallo,
nachfolgend ein Ausschnitt des sehr komplexen XML-Dokuments.
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <Table> <URL>s2011.txt</URL> <Name>Sachkonten 2011</Name> <Description>Sachkonten 2011</Description> <DecimalSymbol>,</DecimalSymbol> <DigitGroupingSymbol>.</DigitGroupingSymbol> <Range><From>2</From></Range> |
ab hier will ich zugreifen:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| <VariableLength> <VariableColumn> <Name>Kontonummer</Name> <Description>Kontonummer alphanumerisch zum Erhalt fuehrender Nullen </Description> <AlphaNumeric/> <MaxLength>7</MaxLength> </VariableColumn> <VariableColumn> <Name>Kuerzel</Name> <Description>Kürzel</Description> <AlphaNumeric/> <MaxLength>8</MaxLength> </VariableColumn> <VariableColumn> <Name>Name</Name> <Description>Name</Description> <AlphaNumeric/> <MaxLength>40</MaxLength> </VariableColumn> <VariableColumn> <Name>Eroeffnungsdatum</Name> <Description>Eröffnungsdatum</Description> <Date> <Format>DD.MM.YYYY</Format> </Date> </VariableColumn> |
...
Nun bin ich schon eine Schritt weiter: wenn ich das Name-Element des Tags VariableColumn auslesen will, dann erreiche ich so das erste Element:
C#-Quelltext
1: 2: 3: 4:
| var E = (from el in xElement.Descendants("Table") where (string)el.Element("URL").Value == ("s2011.txt") select new { Name = (string)el.Descendants("VariableColumn").Elements("Name").First() }); |
... und mit .Last() erreiche ich das letzte Element.
Aber: es ist immer noch nicht klar, wie ich die Elemente dazwischen erreichen kann.
Gruß
Walter
Moderiert von
Kha: XML-Tags hinzugefügt
Moderiert von
Kha: C#-Tags hinzugefügt
Kha - So 13.03.11 20:05
Unter der Annahme, dass die URLs eindeutig sind, ist hier Single besser geeignet:
C#-Quelltext
1:
| IEnumerable<XElement> variableColumns = xElement.Descendants("Table").Single(el => el.Element("URL").Value == "s2011.txt").Descendants("VariableColumn"); |
Dann kannst du über variableColumns iterieren und erhälst jeweils ein XElement, das einen <VariableColumn>-Knoten repräsentiert; mit
.Element("Name").Value kommst du an dessen Namen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!