2016-05-16 2 views
0

Я пишу Sub, который читает XML-файл из заданного пути, а затем загружает его в массив объектов. По какой-то причине алгоритм отлично работает для имени, но отказывается работать с тегами стоимости и типа. Что происходит?XML-чтение Sub Не работает

(UPDATE: отказывается работать означает, что он возвращает пустую строку, или в случае стоимости: 0)

Вот мой код:

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 

Вот XML файл: Мона Лиза искусство Горошек 35,85 искусство

+0

Что вы имеете в виду «отказывается работать»: действительно возникают ошибки или это просто пустая строка и т.д.? Кроме того, предоставьте XML-файл, который вы пытаетесь проанализировать. – DAXaholic

+0

Узнайте о выражениях «XPath». Вы были бы намного счастливее. http://www.w3schools.com/xsl/xpath_syntax.asp –

+0

@Pradeep Kumar Как использовать XPath в VB.NET? –

ответ

1

Чтение данных XML, как вы делаете, и неуклюжий, а также подвержены ошибкам. Гораздо лучше использовать XPath Expressions, чтобы извлечь данные из вашего интереса из XML-файла, который доставит вам данные только в одной строке кода.

Вы можете узнать больше о XPath Expressions синтаксис здесь, чтобы получить себе начал:

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

Чтобы узнать, как использовать Xpath выражения в VB.NET коде, вы можете найти много интересных статей о интернет. Один из них, что объясняет это легко понять язык здесь:

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

Смежные вопросы