XML Frage

  • VB.NET
  • .NET (FX) 4.0

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von MajorOli.

    Danke aber falsch gedacht...


    hab das Problem gefunden... er geht in der XML bei "Animal_Pig" rein statt "Animal_Cow"

    Warum? ich hab oben doch animal_cow angegeben?

    VB.NET-Quellcode

    1. For Each node3 As XElement In doc3.Descendants("onCreateLoadedObject")
    2. ' MsgBox(node.Value)
    3. Dim fillType As XAttribute = node3.Attribute("saveId")
    4. ' MsgBox(fillType.Value)
    5. If fillType.Value = "Animals_cow" Then 'Hier ist COW angegeben trz geht er zu PIG
    6. ' MsgBox(fillType.Value)
    7. 'Dim fillType2 As XElement = node.Element("tipTriggerFillLevel")
    8. 'MsgBox(fillType2.Value)
    9. For Each node4 As XElement In doc3.Descendants("tipTriggerFillLevel")
    10. Dim fillType2 As XAttribute = node4.Attribute("fillType")
    11. If fillType2.Value = "straw" Then
    12. Dim fillType3 As XAttribute = node4.Attribute("fillLevel")
    13. 'Der Attributwert kann nun beliebig zugeordnet werden
    14. test.Value = fillType3.Value
    15. End If
    16. Next
    17. End If
    18. Next

    der Code

    VB.NET-Quellcode

    1. For Each node4 As XElement In doc3.Descendants("tipTriggerFillLevel")

    sagt das du das ganze Dokument nach dem Wert tipTriggerFillLevel durchsucht, aber nicht in welchem Knoten.
    Deine Abfrage ist dabei irrelevant weil ja immer das ganze doc. durchsucht wird. (glaube ich)

    Ich habe das so gelöst, das ich einen XMLReader genutzt habe. Mit diesem such ich nach dem Knoten onCreateLoadedObject mit dem entsprechendem Attribut und gehe dann (ich glaube mit ReadToNextSibling(tipTriggerFillLevel)) und ziehe dann die Attribute. Wenn die Attribute nicht verändert werden sollen, dann kannst du das auch ganz bequem mit XMLReader..GetAttribute("fillLevel") machen.