我想创建一个读取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;结果是。我该如何解决?在此先感谢您的帮助。亲切的问候。
答案 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
问题解决了。