XML Knotenpfad durch Variable ersetzen ?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    XML Knotenpfad durch Variable ersetzen ?

    Hallo

    Ich arbeite mit XML-Dateien und benutze dazu xDocument.

    Ganz kurz zur generellen Aufgabe:
    Nachsehen ob ein bestimmter Knoten vorhanden ist.
    Wenn nein, dann anlegen und mit Default-Wert füllen
    Wenn ja, prüfen ob der Knoten mit Wert gefüllt ist bzw.
    wenn mit Wert gefüllt, ob dieser im zulässigen Wertebereich ist.
    Wenn nicht dann mit Defaultwert füllen bzw. Wert durch Default ersetzen.

    Hab ich durch die Beschreibung von EDR und anderen Forenbeiträgen auch gut hinbekommen. Vielen Dank hierfür.

    Nun mein Problem:
    Da hier viele Knoten zu überprüfen sind habe ich die Arbeit in eine Sub ausgelagert
    die ich jeweils mit den entsprechenden Parametern aufrufe .

    VB.NET-Quellcode

    1. Sub ParameterCheck(KnotenPfad As String, DefaultWert As String, Bereich As String)


    Knoten überprüfen dann mit z.B.



    VB.NET-Quellcode

    1. If TestFile.Element(Pfad(0)).Element(Pfad(1)).Element(Pfad(2)).Value = Nothing Then


    …usw.

    Ist einfach wenn man sich immer auf der selben Ebene bewegt und davon ausgeht, dass alle übergeordnete Knoten existieren.

    Kann man davon nicht ausgehen braucht man für jede Ebene einen eigenen Programmblock um sich ausgehend von der root durch den Knotenpfad zu hangelt. Und dann wird es aufwändig.

    Jetzt endlich zur Frage:

    Gibt es eine Schreibweise mit Platzhalter bzw. eine besser Methode damit man z.B.

    VB.NET-Quellcode

    1. TestFile.Element(Pfad(0)).Add(New XElement(Pfad(1)))
    2. TestFile.Element(Pfad(0)).Element(Pfad(1)).Add(New XElement(Pfad(2)))
    3. TestFile.Element(Pfad(0)).Element(Pfad(1)).Element(Pfad(2)).Add(New XElement(Pfad(3), Wert.ToString))

    Durch so was ähnliches wie

    VB.NET-Quellcode

    1. TestFile.Add(New XElement(KnotenPfad, Wert.ToString))


    ersetzen kann?
    Gr..... Hatte ich schon befürchtet, da ich auch sonst nirgends was entsprechendes gefunden hatte.
    Wollte nur mochmal die Experten befragen.

    Trotzdem vielen Dank.

    Zu wissen, dass etwas nicht geht ist ja auch schon ein Fortschritt und vielleicht hilft es jemand anderem.