VB.Net XMLReader检查值是否为空

时间:2014-03-28 21:40:05

标签: xml vb.net datagridview

我想创建一个读取xml文件并将获取的值放入DataGridView的程序。 此XML文件是MySQL数据库的表转储。在这张表中我有一套'列我可以选择一些选项。这是一个没有选择选项的例子

<size></size>

并使用选定的选项

<size>SMALL,MEDIUM,LARGE,XLARGE</size>

这是我用来读取xml文件的代码:

    Dim ofile As New OpenFileDialog
    If ofile.ShowDialog = Windows.Forms.DialogResult.OK Then
        Dim reader As XmlTextReader = New XmlTextReader(ofile.FileName)
        Using reader
            Dim toadd As String = Nothing
            Dim str() As String
            Do While (reader.Read())
                Select Case reader.NodeType
                    Case XmlNodeType.Element
                        If reader.Name.ToLower.Contains("oldIndex") Then
                            Exit Select
                        End If
                    Case XmlNodeType.Text
                        If Not reader.Value = vbNullString Or Not reader.Value = vbNullChar Then
                            toadd = toadd & reader.Value & vbTab
                        Else
                            toadd = toadd & "no data" & vbTab
                        End If
                    Case XmlNodeType.EndElement
                        If reader.Name.Contains("RECORD") Then
                            If toadd IsNot Nothing Then
                                str = toadd.Split(vbTab)
                                ShopTable.Rows.Add(str)
                                toadd = Nothing
                            End If
                        End If
                End Select
            Loop
        End Using
    End If

size 标签之间有一些数据时,读取没有问题,但是如果没有数据,那么它什么也没读,我就没有收到“否”数据&#39;结果是。我该如何解决?在此先感谢您的帮助。亲切的问候。

1 个答案:

答案 0 :(得分:0)

好的,我不得不重写我的算法。我的xml文件包含这种格式的数据

<?xml version="1.0" standalone="yes"?>
 <RECORDS>
  <RECORD>
   <customerID>101</customerID>
   <name>Gall Anonim</name>
   <item>t-shirt</item>
   <size></size>
   ...
  </RECORD>
 </RECORDS>

我无法获得size字段的值,它不是事件为空。所以我使用下面的算法来获得size元素的直接值;)

Dim ofile As New OpenFileDialog
If ofile.ShowDialog = Windows.Forms.DialogResult.OK Then
    Dim sr As New System.IO.StreamReader(ofile.FileName)
    Dim document As XDocument = XDocument.Parse(sr.ReadToEnd.ToString)
    Dim records = From record In document.Descendants("RECORD") _
                  Select New With _
                     { _
                        .cID = record.Element("customerID").Value, _
                        .name = Chr(&H22) & record.Element("name").Value & Chr(&H22), _
                        .item = record.Element("item").Value, _
                        .size = record.Element("size").Value _
                     }
    MsgBox(records.cID) 'shows customer id
    do some work with those variables
    ...
End If

问题解决了。