Unbekannte Anzahl von Einträgen aus XML auslesen

  • VB.NET
  • .NET (FX) 4.0

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

    Unbekannte Anzahl von Einträgen aus XML auslesen

    Moin Moin

    Stehe gerade vor folgendem Problem:
    Ich habe eine XML-Datei. Dort habe ich eine Anzahl, die ich auslesen kann. Alles andere ist mir unbekannt, kann es aber mithilfe der Anzahl auslesen.

    Beispiel:
    Ich habe eine XML-Datei, in denen verschiedene Orte stehen. Es ist nur die Anzahl der Orte bekannt, aber diese ist variabel, also nicht konstant.
    Die Orte sind in den Tags <ort_1> ... <ort_2> ... usw. gespeichert.

    XML-Quellcode

    1. <orte>
    2. <anzahl>5</anzahl>
    3. <ort_1>Frankfurt</ort_1>
    4. <ort_2>Hamburg</ort_2>
    5. <ort_3>Berlin</ort_3>
    6. <ort_4>München</ort_4>
    7. <ort_5>Bremen</ort_5>
    8. </orte>


    Da die Anzahl der Orte stetig variiert, würde ich gerne per schleife die Orte auslesen. Allerdings kann ich das ganze so einfach nicht lösen:

    VB.NET-Quellcode

    1. Dim orte As New List(Of String)
    2. Dim anzahl As Short = CShort(xdoc_orte.<orte>.<anzahl>.Value)
    3. For i As Integer = 1 To anzahl
    4. Dim ort As String = "ort_" & i
    5. landkreise.Add(xdoc_orte.<orte>.<ort>.Value) ' ort = variable
    6. Next


    Ich kann keine Variable in diesen Ausdruck packen, da dieser ja direkt versucht diesen Tag in der XML-Datei zu finden.
    Gibt es eine Lösung auf die ich gerade nicht komme? Das ganze muss variabel bleiben, da sonst mein ganzes System nicht funktioniert.

    Mit vielen freundlichen Grüßen
    FranzBauer
    Ich hasse es wenn einem direkt vorgeworfen wird, ohne dass die Frage überhaupt durchgelesen wurde, dass man nur fertien Code will. Schade dass es sich hier so entwickelt hat :(
    "Windows Vista Home Premium x32" - Wann kapieren endlich alle, dass es kein "x32" gibt? 32 Bit oder x86!
    Mach doch so:

    XML-Quellcode

    1. <orte>
    2. <anzahl>5</anzahl>
    3. <ort id="1">Frankfurt</ort>
    4. <ort id="2">Hamburg</ort>
    5. <ort id="3">Berlin</ort>
    6. <ort id="4">München</ort>
    7. <ort id="5">Bremen</ort>
    8. </orte>

    Das ließe sich viel einfacher auslesen.
    Mit freundlichen Grüßen,
    Thunderbolt
    ja, und das wäre auch reguläres Xml.
    Ein Xml, wo beliebig viele verschiedene Tagnamen drin auftreten können (ort_1, ort_2, .....) ist irregulär.

    Unklar ist mir auch, was der Tag anzahl soll. Zähl doch einfach die orte, dann weißt du die Anzahl. Bzw. beim Abrufen der Orte kriegste die Anzahl eh geliefert.
    der Tag anzahl ist also redundant und eine Fehlerquelle, denn es kann leicht geschehen, dass die wirkliche Anzahl der Orte anners ist.

    ErfinderDesRades schrieb:

    ja, und das wäre auch reguläres Xml.
    Ein Xml, wo beliebig viele verschiedene Tagnamen drin auftreten können (ort_1, ort_2, .....) ist irregulär.

    Oi, war mir nicht ganz bekannt. Bin neu im Bereich XML, hatte vorher alles mit INI-Dateien geregelt, aber da gibts Probleme beim auslesen (weiß der Gott warum)...

    ErfinderDesRades schrieb:


    Unklar ist mir auch, was der Tag anzahl soll. Zähl doch einfach die orte, dann weißt du die Anzahl. Bzw. beim Abrufen der Orte kriegste die Anzahl eh geliefert.
    der Tag anzahl ist also redundant und eine Fehlerquelle, denn es kann leicht geschehen, dass die wirkliche Anzahl der Orte anners ist.


    Sorry für die ganz blöde Frage (und ja, du darfst mich steinigen!):
    Wie zur Hölle kann ich die Zählen? Weil genau da würde das Problem am Ende doch landen...
    *duck und weg*

    MFG
    FranzBauer
    Ich hasse es wenn einem direkt vorgeworfen wird, ohne dass die Frage überhaupt durchgelesen wurde, dass man nur fertien Code will. Schade dass es sich hier so entwickelt hat :(
    "Windows Vista Home Premium x32" - Wann kapieren endlich alle, dass es kein "x32" gibt? 32 Bit oder x86!
    Naja in dem Beispiel was Thunderbolt dir gegeben hat, wird doch eine ID mit angeben und diese brauchst einfach nur zählen, auslesen oder was auch immer du machen willst und/ oder du zählst einfach wie EDR angegeben hat die Anzahl der Orte <ort </ort>, deswegen brauchst du die Anzahl nicht zu zählen.