XDocument list all Elements

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    XDocument list all Elements

    Moin, Ich weiß grade nicht weiter.Ich möchte alle Elemente in der XML Auflisten:

    XML-Quellcode

    1. <fillUnit><fillUnitConfigurations><fillUnitConfiguration><fillUnits><fillTrigger><fillSound template="DEFAULT_REFUEL_SOUND" linkNode="0>"/></fillTrigger><fillUnit unit="$l10n_unit_literShort" fillTypes="sugarBeet" capacity="30000" ><fillMassNode node="holmerT4_30_back_component2"/><exactFillRootNode node="exactFillRootNode" /><alarmTriggers><alarmTrigger minFillLevel="1" maxFillLevel="1" turnOffInTrigger="true"/></alarmTriggers></fillUnit><fillUnit unit="$l10n_unit_literShort" showOnHud="false" showInShop="false" fillTypes="diesel" capacity="1150" /><fillUnit unit="$l10n_unit_literShort" showOnHud="false" showInShop="false" fillTypes="def" capacity="95" /></fillUnits></fillUnitConfiguration></fillUnitConfigurations></fillUnit>


    Mein Code:

    VB.NET-Quellcode

    1. For Each node As XElement In doc2.Descendants("vehicle")
    2. If node IsNot Nothing Then
    3. Dim fillType As XElement = node.Element("fillUnit")
    4. Dim fillType2 As XElement = fillType.Element("fillUnitConfigurations")
    5. Dim fillType3 As XElement = fillType2.Element("fillUnitConfiguration")
    6. For Each fillType5 As XElement In fillType3.Descendants("fillUnits")
    7. Dim fillType6 As XElement = fillType5.Element("fillUnit")
    8. MsgBox(fillType6.ToString)
    9. Next
    10. End If
    11. Next


    Aber er listet mir nur:

    <fillUnit unit="$l10n_unit_literShort" fillTypes="sugarBeet" capacity="30000"><fillMassNode node="holmerT4_30_back_component2" /><exactFillRootNode node="exactFillRootNode" /><alarmTriggers><alarmTrigger minFillLevel="1" maxFillLevel="1" turnOffInTrigger="true" /></alarmTriggers></fillUnit>


    Also fehlt:
    - diesel
    - def

    Weißt jemand evtl wo mein Fehler liegt?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xX-Nick-Xx“ ()

    Ich war mal so frei.
    Könnte wohl daran liegen, dass der (vermeintliche) Root-Node vorzeitig abgeschlossen wird, weil ein innerer Node genauso heißt (fillUnit). Anfang: Zeile#1, tatsächliches Ende: Z#14; gewolltes Ende: Z#20

    XML-Quellcode

    1. <fillUnit>
    2. <fillUnitConfigurations>
    3. <fillUnitConfiguration>
    4. <fillUnits>
    5. <fillTrigger>
    6. <fillSound template="DEFAULT_REFUEL_SOUND" linkNode="0>"/>
    7. </fillTrigger>
    8. <fillUnit unit="$l10n_unit_literShort" fillTypes="sugarBeet" capacity="30000" >
    9. <fillMassNode node="holmerT4_30_back_component2"/>
    10. <exactFillRootNode node="exactFillRootNode" />
    11. <alarmTriggers>
    12. <alarmTrigger minFillLevel="1" maxFillLevel="1" turnOffInTrigger="true"/>
    13. </alarmTriggers>
    14. </fillUnit> <--- vorzeitiges Ende
    15. <fillUnit unit="$l10n_unit_literShort" showOnHud="false" showInShop="false" fillTypes="diesel" capacity="1150" />
    16. <fillUnit unit="$l10n_unit_literShort" showOnHud="false" showInShop="false" fillTypes="def" capacity="95" />
    17. </fillUnits>
    18. </fillUnitConfiguration>
    19. </fillUnitConfigurations>
    20. </fillUnit> <--- reguläres Ende

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    So gut bin ich nicht in der XML-Materie, aber ich wage zu behaupten: Falls möglich, dann benenn die Nodes um. Ein innerer Knoten darf m.E. nicht so heißen wie ein äußerer.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Umbenennen ist leider nicht möglich, da das vom Spiel gemanagt wird


    EDIT:
    habs rausgefunden.
    Lösung:

    VB.NET-Quellcode

    1. ​Dim fillType6 As XElement = fillType5.Element("fillUnit").Parent


    Diese Funktioniert :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xX-Nick-Xx“ ()