.XML Zeilenweise auslesen und Werte aus Elementen auslesen

  • VB.NET

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

    .XML Zeilenweise auslesen und Werte aus Elementen auslesen

    Hallo , Ich habe eine XML Datei in Folgendem Aufbau :

    XML-Quellcode

    1. <?xml version="1.0"?>
    2. <level width="2048" bg="gfx/serious_sam.png" music="sfx/music/Grand_Cathedral.ogg">
    3. <spawn x="10" y="350"/>
    4. <entity type="Block" x="50" y="476" />
    5. <entity type="Block" x="50" y="376" />
    6. <entity type="Block" x="50" y="326" />
    7. <entity type="Block" x="50" y="276" />
    8. <entity type="Block" x="50" y="226" />
    9. <entity type="Block" x="50" y="176" />
    10. </level>


    Ich möchte nun mit meinem Programm , die Datei Zeilenweise auslesen und Folgende Elemente auslesen können :
    1. Spawn + Position
    2. Entity type + Position
    3. level width
    4. Bg
    5. Musik
    Ich habe es jetzt mit folgendem Code Probiert(Für die Zeilen mit dem Typ "entity")

    VB.NET-Quellcode

    1. Dim xDoc As XDocument = New XDocument()
    2. xDoc = XDocument.Load(Application.StartupPath & "\level.xml")
    3. For Each item As XElement In xDoc.Element("level").Element("entity").Elements()
    4. MsgBox(item.Element("x").Value)
    5. Next

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Graphicscore“ ()

    Was funktioniert mit deinem Code nicht?
    Du könntest "level" durch root ersetzen, und entity und spawn sind schon Elemente von level (dem rootelement) und sind daher nicht in der Auflistung enthalten die du da gerade abrufst...das müsste theoretisch eine leere Liste sein / du bekommst keine einzige MSGBox gezeigt oder? MessageBox.Show(..) wäre VB2010 angemessen aber jedem das seine ^^
    Die Werte width, bg, music, x und y sind jeweils als Attribute und NICHT ALS EIGENE ELEMENTE zu verarbeiten...


    VB.NET-Quellcode

    1. Dim xdoc As XDocument = New XDocument(XDocument.Load(Application.StartupPath & "\level.xml"))
    2. 'Attribute vom Root
    3. MessageBox.Show("Levelgröße: " & xdoc.Root.Attribute("width").Value & vbNewLine & _
    4. "Background: " & xdoc.Root.Attribute("bg").Value & vbNewLine & _
    5. "Levelmusik: " & xdoc.Root.Attribute("music").Value)
    6. 'Elemente im Root
    7. For Each element As XElement In xdoc.Root.Elements()
    8. With element
    9. Select Case .Name
    10. Case "spawn"
    11. MessageBox.Show("Der Spawn liegt bei X:" & .Attribute("x").Value & " Y:" & .Attribute("y").Value)
    12. Case "entity"
    13. MessageBox.Show("Ein Entity vom Typ """ & .Attribute("type").Value & """ bei X:" & .Attribute("x").Value & " Y:" & .Attribute("y").Value)
    14. End Select
    15. End With
    16. Next

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „noBlubb“ ()