Hy @ all.
Wiedermal habe ich ein Problem und versuche schon ne ganz eWeile die Lösung zu finden
Es wird ein XML Dokument erzeugt, wo verschiedene Elemente mit verschiedenen Einträgen vorhanden sind (achneee

)
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: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| <?xml version="1.0" encoding="UTF-8" ?> <sourcemonitor_metrics> <project version="2.5"> // Hier werden die Namen der einzelnen Spalten erwähnt <metric_names name_count="15"> <metric_name id="M0" type="number">Lines</metric_name> <metric_name id="M1" type="number">Statements </metric_name> … </metric_names> <checkpoints checkpoint_count="1"> <checkpoint checkpoint_name="Baseline"> <files file_count="2"> // Hier wird der erste Dateiname, der geprüft wird, erwähnt <file file_name="CopyFromMainForm.cs"> <metrics metric_count="15"> // Hier sind die verschiedenen Analyseergebnisse der einzelnen Spalten der ersten Datei <metric id="M0">18</metric> <metric id="M1">11</metric> <metric id="M2">0.0</metric> <metric id="M3">0.0</metric> <metric id="M4">1</metric> ... </metrics> </file> // Hier wird der zweite Dateiname, der geprüft wird, erwähnt <file file_name="CopyFromProgram.cs"> <metrics metric_count="15"> // Hier sind die verschiedenen Analyseergebnisse der einzelnen Spalten der zweiten Datei <metric id="M0">25</metric> <metric id="M1">9</metric> <metric id="M2">20.0</metric> <metric id="M3">16.0</metric> <metric id="M4">1</metric> ... </metrics> </file> ... </sourcemonitor_metrics> |
Ich möchte nun die metric Einträge JEDER Datei (file) in einer ListView haben. Habe also eine Art Tabelle.
Sollte so z.B. aussehen:
File Lines Statement
1.cs 11111 34
2.cs 34322 1
(das ist ein Beispiel, keine relevanten Werte!!!)
Das die verschiedenen Dateien in der Spalte „File“ angezeigt werden funktioniert schon, aber irgendwas stimmt mit diesem foreach Teil nicht (siehe Programmcode unten), denn er zeigt mir immer nur die metric Inhalte der ersten Datei an, bei jeder Datei also das Gleiche!!!
Liegt das irgendwie an der XmlNode = doc.SelectSingleNode(Pfad)? Denn soweit ich weiß wird ja nur das erste metric Element aus dem Dokument ausgewählt, aber wenn ich das Ganze mit XmlNodeList erzeuge, dann macht er die ganzen Analyseergebnisse in eine Spalte. Ist wahrscheinlich nur ne Kleinigkeit, aber ich bekomme es einfach nicht hin!
Danke euch für eure Hilfe
So sieht ein Teil des Codes aus:
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: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| XmlDocument doc2 = new XmlDocument(); doc2.Load(export_file.InnerText);
XmlNode metric_names = doc2.SelectSingleNode("/sourcemonitor_metrics/project/metric_names"); XmlNode metrics = doc2.SelectSingleNode("/sourcemonitor_metrics/project/checkpoints/checkpoint/files/file/metrics"); listView.Columns.Add("File");
foreach (XmlNode metric_name in metric_names) { listView.Columns.Add(metric_name.InnerText); }
if (_fileTextBox.Text.Length > 0 && _fileRadioButton.Checked) { for (int i = 0; i < _selectedFilesListBox.Items.Count; i++) { string fileName = _selectedFilesListBox.Items[i].ToString();
ListViewItem item = new ListViewItem(fileName); foreach (XmlNode metric in metrics) { item.SubItems.Add(metric.InnerText); }
listView.Items.Add(item); } } |