xmlDocument SelectNodes: Es soll bei identischem XPath eine Liste von Werten gefunden werden.

  • C#
  • .NET (FX) 1.0–2.0

    xmlDocument SelectNodes: Es soll bei identischem XPath eine Liste von Werten gefunden werden.

    Hallo zusammen,

    gleich zu Anfang: Bei den Daten handelt es sich nicht um ein Dataset und XDocument kommt auch nicht in Frage.
    Ich habe ein zeitliches Problem bei einer Löschroutine bei einer erheblichen Anzahl von "Datensätzen".
    Leider bin ich auch was XmlDocument angeht blutiger Anfänger.

    Folgendes funktionert zwar, ist aber sehr langsam:

    C#-Quellcode

    1. foreach (string fin in Vehicles) //Vehicles ist eine List<string>
    2. {
    3. XmlNode childToDelete = xmlDocument.SelectSingleNode(String.Format("//RecordSet/VehicleHeader[@ChassisNumber='{0}']", fin));
    4. childToDelete.ParentNode.RemoveChild(childToDelete);
    5. }


    Folgendes hätte ich gerne, leider funktioniert das so nicht:

    C#-Quellcode

    1. string Union = ListTo.Union(Vehicles); //Die Funktion baut einen String in der Form: "item1|item2|item3"
    2. XmlNodeList xnList = xmlDocument.SelectNodes(String.Format("//RecordSet/VehicleHeader[@ChassisNumber='{0}']", Union));
    3. foreach (XmlNode el in xnList)
    4. {
    5. el.ParentNode.RemoveChild(el);
    6. }

    Nachtrag: Es gibt keinen Fehler, aber xnList bleibt leer.

    Hat jemand eine performante Idee für mich?
    Vielen lieben Dank und frohe Ostertage.

    Nachtrag2: Ich habe eine performante Lösung für mich gefunden und markiere den Thread als Erledigt.
    Hier meine Lösung:

    C#-Quellcode

    1. XmlNodeList xnList = xmlDocument.SelectNodes("//RecordSet/VehicleHeader");
    2. foreach (XmlNode el in xnList)
    3. {
    4. XmlAttributeCollection att = el.Attributes;
    5. foreach (XmlAttribute at in att)
    6. {
    7. if (at.Name == "ChassisNumber")
    8. if(Vehicles.Contains(at.Value))
    9. el.ParentNode.RemoveChild(el);
    10. }
    11. }


    Allen ein frohes Osterfest / genüssliche freie Tage

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Dksksm“ ()