Guten Morgen,
beim Durchlaufen der Elemente eines xElements komme ich ins Stolpern. Es gibt eine Exception, und ich weiss nicht, wie ich die abfangen kann.
Die Schleife startet mit
Läuft gut, ausser wenn ein Knoten mit Kommentar (XComment) in der XML steht. Dann fliegt es mir um die Ohren, denn der Compiler kann XComment nicht in XElement casten (for each xe ...).
Mit Try..Catch bin ich nicht weiter gekommen, da das Ganze in einer rekursiven Funktion läuft und diese dann durcheinander kommt.
Hier ein bisschen mehr Code. Ich baue aus einer Xml-Datei einen Operator-String zusammen, denn ich (dank sei Ralf Jansen!) dann auswerte.
Kann mir jemand helfen? Danke.
beim Durchlaufen der Elemente eines xElements komme ich ins Stolpern. Es gibt eine Exception, und ich weiss nicht, wie ich die abfangen kann.
Die Schleife startet mit
Code:
For Each xe As XElement In element.Elements
Mit Try..Catch bin ich nicht weiter gekommen, da das Ganze in einer rekursiven Funktion läuft und diese dann durcheinander kommt.
Hier ein bisschen mehr Code. Ich baue aus einer Xml-Datei einen Operator-String zusammen, denn ich (dank sei Ralf Jansen!) dann auswerte.
Code:
Private Function AllElementsRecursiv(ByVal element As XElement, depth As Int32) As String Static opString As String Static operand As New String(CType("And", Char())) Static liste As List(Of String) If opString Is Nothing Then opString = "" If liste Is Nothing Then liste = New List(Of String) liste.Add(operand) End If For Each xe As XElement In element.Elements If xe.Name.LocalName.StartsWith("and") Or xe.Name.LocalName.StartsWith("or") Then operand = xe.Name.LocalName opString += " (" liste.Add(operand) Else opString += " " & xe.Name.LocalName & " " 'nur zum Testen, hier wird xe ausgewertet und ergibt "True" oder "False" If Not xe Is element.LastNode Then opString += operand End If End If If xe.Nodes.Count > 0 Then AllElementsRecursiv(xe, depth + 1) opString += ") " If Not xe Is element.LastNode Then opString += liste(depth) End If End If Next Return opString 'ergibt dann z.B. "True And(((True And True) Or False) And True)"
Comment