2016-05-16 6 views
0

Ich schreibe eine Sub, die eine XML-Datei von einem bestimmten Pfad liest und dann in ein Array von Objekten lädt. Aus irgendeinem Grund funktioniert der Algorithmus gut für den Namen, verweigert jedoch die Arbeit mit den Kosten- und Typen-Tags. Was ist los?XML Reading Sub Funktioniert nicht

(UPDATE: bedeutet es einen leeren String zurück, oder im Fall von Kosten zu arbeiten weigert: 0)

Hier ist mein Code:

Public Sub New(ByVal Path As String) 
    Try 
     Dim XML As New XmlTextReader(Path) 
     Try 
      Dim Bool As Boolean = False 
      Dim Name As String = "" 
      Dim Cost As Double = 0 
      Dim Type As String = "" 
      While True 
       XML.Read() 
       If Bool Then 
        Select Case XML.Name 
         Case Is = "name" 
          XML.Read() 
          Name = XML.Value 
         Case Is = "cost" 
          XML.Read() 
          Double.TryParse(XML.Value, Cost) 
         Case Is = "type" 
          XML.Read() 
          Type = XML.Value 
        End Select 
       End If 
       If XML.Name = "card" Then 
        Bool = True 
       End If 
       If Not CheckNulls(Name, Cost, Type) Then //CheckNulls returns true if all arguments passed to it are either empty strings, or 0 
        Dim Card As New Card(Name, Cost, Type) 
        Deck.Add(Card) 
        Cost = 0 
        Name = "" 
        Type = "" 
        Bool = False 
       End If 
      End While 
     Catch Ex As Exception 
      Exit Sub 
     End Try 
    Catch Ex As Exception 
     MsgBox("The System has encountered an error. Running the software anymore could cause a serious malfunction. Please exit now", MsgBoxStyle.OkOnly, "Error Message") 
    End Try 
End Sub 

Hier ist der XML Datei: Mona Lisa Kunst Tupfen 35.85 Kunst

+0

Was meinen Sie mit „weigert zu arbeiten“: Gibt es einen Fehler auftreten, oder ist es einfach eine leere Zeichenkette usw.? Geben Sie außerdem die XML-Datei an, die Sie analysieren möchten. – DAXaholic

+0

Erfahren Sie mehr über "XPath" -Ausdrücke. Du wärst viel glücklicher. http://www.w3schools.com/xsl/xpath_syntax.asp –

+0

@ Pradeep Kumar Wie verwende ich XPath in VB.NET? –

Antwort

1

Lesen von XML-Daten so, wie Sie tun, ist sowohl plump als auch fehleranfällig. Es ist viel besser, XPath Expressions zu verwenden, um die Daten Ihres Interesses aus einer XML-Datei zu extrahieren, die Sie die Daten in nur einer Zeile Code erhält.

Sie mehr über XPath Expressions Syntax lernen hier, sich um loszulegen:

http://www.w3schools.com/xsl/xpath_syntax.asp

Um zu erfahren, wie XPath-Ausdrücke in VB.NET-Code verwenden, können Sie viele interessante Artikel über die finden Internet. Einer von ihnen, das erklärt es in einem einfachen Sprache zu verstehen, ist hier:

http://www.aspsnippets.com/Articles/XmlDocument-XPath-Example-Select-XML-nodes-by-Name-and-Attribute-values-in-C-and-VBNet.aspx