C# XML-Datei komplexe Knoten auslesen

Hallo,

Beschreibe dein Problem bitte genauer, eventuell löst es sich dabei.

Ich kann hier leider nicht erkennen, ob Du:

- wirklich ein Problem damit hast, von einem Knoten alle Subknoten durchzugehen (?) oder
- Du dich nur schlecht ausdrückst oder Du wirklich etwas in eine Liste pressen willst was an sich nicht reinpasst (1:n)

Ich kann beides in deinem Text erkennen, aber da Du alles andere ja herausbekommst, ist es wohl ehr das zweite?

Viele Grüße
Winni
 
Du kannst die XML Struktur "automatisch" als C# Klassen abbilden, und diese dann serialisieren, somit kannst du dann beliebige Listen aus beliebigen Attributen erstellen.

Gruß
 
Das XML ist schon ungeschickt gewählt und wird sich auch schwierig bis gar nicht über xsd oder ähnliches darstellen lassen. Hast Du da Einfluss drauf? So wäre es optimal und dann auch leichter abzufragen:

<Stufen Anzahl = "2">
<Stufe Tiefe = "25" Durchmesser = "8">
<Passung Typ = "H7" Abmaßunten = "0" Abmaßoben = "0.025"/>
</Stufe>
<Stufe Tiefe = "32" Durchmesser = "6.8" />
</Stufen>

Die Anzahl Angabe kann man sich auch sparen.

Dann kannst Du Dir den ganzen Knoten Stufen nehmen und mit einer while Schleife durchlaufen.
 
Wie sieht denn Deine Klasse Bohrung aus? Hast Du das Problem schon so gelöst, dass Du alle Varianten abbilden kannst?

Wenn Stufen in Ihren Attributen und Unterelementen so flexibel sind, dass Du keine Aussage über die Struktur treffen kannst, ist es ja schon schwierig das als Klasse abzubilden. Im Zweifel erstellst Du für die Attribute ein Dictionary von objects o.ä., ob einen das aber weiterbringt bezweifel ich. Hängt natürlich auch davon ab, was Du damit später noch machen willst, das erschließt sich uns ja nicht.

Wenn das XML nicht sauber definiert ist, wirst Du mit Linq wie Du schon gemerkt hast nicht so weit kommen. Bzw. kannst die Vorteile nicht direkt nutzen. Da hilft eher ein iterativer Ansatz mittel XmlReader- oder XElement-Klasse. Die Frage ist nur weiterhin wie Du es auf Deine Klasse Bohrung abbildest...

Was ist übrigens eine If-Schleife?

Edit: Abbilden könntest Du die Stufen z.B. so:

Code:
public class Element
{
	public Dictionary <String, String> Attributes;
	public boolean HasSubElements;
	public Dictionary <String, Element> SubElements;
}
 
Zuletzt bearbeitet:
Zurück
Oben