[C#] XML-Datei parsen

Diskutiere [C#] XML-Datei parsen im .NET Technology Forum; Guten Tag, ich möchte eine XML-Datei effizient und mit wenig Codezeilen parsen. Dabei sollen die Attribute der Elemente in verschiedene Listen...

  1. haui95
    haui95 Neues Mitglied
    Guten Tag,

    ich möchte eine XML-Datei effizient und mit wenig Codezeilen parsen. Dabei sollen die Attribute der Elemente in verschiedene Listen gespeichert werden. Diese Listen dienen als Parameter des Konstruktors der Klasse Spur. Am Ende jedes Elementes "spur" der XML-Datei soll die neu erstellte Spur zu einer Liste "spuren" hinzugefügt werden.

    [XML]
    <?xml version="1.0" encoding="UTF-8"?>
    <punkte>
    <spur>
    <punkt x="976.0" y="384.0"/>
    <punkt x="375.0" y="389.0"/>
    <punkt x="185.0" y="394.0"/>
    <punkt x="-20.0" y="399.0"/>
    <ampel id="1" pos="292" phase="6"/>
    </spur>
    <spur>
    <punkt x="976.0" y="325.0"/>
    <punkt x="575.0" y="300.0"/>
    <punkt x="535.0" y="-20.0"/>
    <ampel id="2" pos="292" phase="6"/>
    </spur>
    <spur>
    <punkt x="-20.0" y="536.0"/>
    <punkt x="250.0" y="531.0"/>
    <punkt x="500.0" y="531.0"/>
    <punkt x="976.0" y="520.0"/>
    <ampel id="3" pos="225" phase="6"/>
    </spur>
    <spur>
    <punkt x="-20.0" y="480.0"/>
    <punkt x="425.0" y="415.0"/>
    <punkt x="477.0" y="-20.0"/>
    <ampel id="4" pos="225" phase="6"/>
    </spur>
    <spur>
    <punkt x="400.0" y="-20.0"/>
    <punkt x="470.0" y="430.0"/>
    <punkt x="976.0" y="460.0"/>
    <ampel id="5" pos="218" phase="6"/>
    </spur>
    <spur>
    <punkt x="340.0" y="-20.0"/>
    <punkt x="310.0" y="300.0"/>
    <punkt x="-20.0" y="343.0"/>
    <ampel id="6" pos="218" phase="6"/>
    </spur>
    </punkte>
    [/XML]

    Bisher habe ich folgenden Code:

    Code (Java):

    XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);
                doc.Normalize();

                var elements = doc.GetElementsByTagName("spur");
                foreach (XmlElement spur in elements)
                {
                    List<float> xList = new List<float>();
                    List<float> yList = new List<float>();
                    List<int> id = new List<int>();
                    List<int> pos = new List<int>();

                    var points = spur.GetElementsByTagName("punkt");
                    var lights = spur.GetElementsByTagName("ampel");

                    foreach (XmlElement p in points)
                    {
                        xList.Add(float.Parse(p.GetAttribute("x")));
                        yList.Add(float.Parse(p.GetAttribute("y")));
                    }

                    foreach (XmlElement l in lights)
                    {
                        pos.Add(int.Parse(l.GetAttribute("pos")));
                        id.Add(int.Parse(l.GetAttribute("id")));
                    }

                    spuren.Add(new Spur(xList, yList, id, pos));
                }
     
    Gibt es eine Möglichkeit, das Auslesen der XML-Datei zu optimieren. Mit Linq bin ich auch nicht weiter gekommen. Obwohl der Code funktioniert, gefällt er mir jedoch nicht.

    Vielen Dank

    Hauke :)
     
  2. Vielleicht hilft dir dieses Training hier weiter.
Die Seite wird geladen...

[C#] XML-Datei parsen - Ähnliche Themen

[C#] Rechnung ergibt immer 0
[C#] Rechnung ergibt immer 0 im Forum .NET Technology
[C#] PNG Bilder verzerrt
[C#] PNG Bilder verzerrt im Forum Softwareentwicklung
Auslesen der Länge einer XML-Datei in Android Studio
Auslesen der Länge einer XML-Datei in Android Studio im Forum XML und Co.
Validierung einer XML-Datei - Führende Leerzeichen und Tabs
Validierung einer XML-Datei - Führende Leerzeichen und Tabs im Forum XML und Co.
Bestimmte Werte eine XML-Datei ausgeben.
Bestimmte Werte eine XML-Datei ausgeben. im Forum Java Basics - Anfänger-Themen
Thema: [C#] XML-Datei parsen