Umfangreiche XML sortieren

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von mikeb69.

    Umfangreiche XML sortieren

    Hallo Forum,

    ich hab eine umfangreiche unsortierte XML Datei in mit einer festen Anzahl unterschiedlicher Nodes in einem XMLDocument vorliegen.

    ​Die Datei sieht in etwa so aus (Beispiel)

    XML-Quellcode

    1. <root>
    2. <tag2 id=1></tag2>
    3. <tag2 id=2></tag2>
    4. viele weitere
    5. <tag1 id=1></tag1>
    6. <tag1 id=2></tag1>
    7. viele weitere
    8. <tag3 id=1></tag3>
    9. <tag3 id=2></tag3>
    10. viele weitere
    11. </root>

    Die dargestellte fiktive Datei stellt das sortierte Ergebnis dar, die Nodes müssen in einer definierten Reihenfolge in der Datei zu finden sein - nicht alphabetisch geordnet.
    ​Die Datei ist bis zu 5MB groß

    Frage:
    ​Wie kann ich das am Einfachsten bewerkstelligen.

    Eigener Ansatz:
    ​ich lese alle Nodes nach Typen (tag1, tag2, tag3) geordnet in jeweils ein eigenes IEnumerable<XmlNode> ein und sortiere das.
    ​Danach erstelle ich ein neues XMLDocument, mit den sortierten Nodes in der gewünschten Reihenfolge, welches ich abspeichere.

    Gruss

    ​mikeb69
    @mikeb69 Wie wurde diese Datei denn generiert?
    Wenn das nur zu Fuß geht, mach Dir eine Klasse ElementarNodeContent, befülle deren Instanzen, lege sie in einer List(Of T) ab, sortiere die und speicheere das ganze wieder ab.
    ElementarNodeContent könnte solche Elemente haben:

    XML-Quellcode

    1. <tag2 id=1></tag2>
    2. <tag2 id=2></tag2>
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany,
    ​die Datei entspricht einem Abbild der Datenbank - sie wurde durch einen Export erstellt.
    Nachdem neue Nodes per Append angefügt wurden ist die Datei unsortiert.

    Was du vorschlägst klingt wie das was ich mir schon ausgedacht hatte.

    Gruss und Danke

    ​mikeb69