如果我导入此类数据,则无效。
调试也显示
"类型' System.Xml.XmlException'的第一次机会异常发生在System.Xml.dll"
中<?xml version="1.0" encoding="utf-8" ?>
<XMLDocument>
<Books>
<Book>
<row id="0">
<data_rate_in_as_string>0B</data_rate_in_as_string>
<data_rate_out_as_string>0B</data_rate_out_as_string>
<downloaded_as_string>956.6MB</downloaded_as_string>
<elapsed_as_string>174d2h48m49s</elapsed_as_string>
</row>
</Book>
<Book>
<row id="1">
<data_rate_in_as_string>0B</data_rate_in_as_string>
<data_rate_out_as_string>0B</data_rate_out_as_string>
<downloaded_as_string>956.6MB</downloaded_as_string>
<elapsed_as_string>174d2h48m49s</elapsed_as_string>
</row>
</Book>
</Books>
</XMLDocument>
但是,如果我完全删除行ID,它将起作用,我可以导入我的数据。 我想保留我的行ID,我也想将它们添加到我的datagridview中。
这是项目代码,如果它有帮助的话。
Public Shared Function EmptyStringToNull(o As String) As Object
Dim ret As Object = DBNull.Value
Try
If o.Trim.Length = 0 Then
ret = DBNull.Value
Else
ret = o
End If
Catch ex As Exception
End Try
Return ret
End Function
Private Sub ReadXMLFile()
Dim xmlDoc As New System.Xml.XmlDocument
Dim root As XmlElement = Nothing
Dim nodes As XmlNodeList = Nothing
Dim node As XmlNode = Nothing
Dim xmlFile As String = ""
Try
OpenFileDialog1.ShowDialog()
xmlFile = OpenFileDialog1.FileName
xmlDoc.Load(xmlFile)
root = xmlDoc.DocumentElement
nodes = root.SelectNodes("//XMLDocument/Books/Book/") 'The XMLPath
'nodes = root.SelectNodes("//result/data/row") 'The XMLPath
Me.DataGridView1.Rows.Clear() 'Clear Grid
For Each node In nodes
Me.DataGridView1.Rows.Add(EmptyStringToNull(node("rowid").InnerText),
EmptyStringToNull(node("data_rate_in_as_string").InnerText),
EmptyStringToNull(node("data_rate_out_as_string").InnerText),
EmptyStringToNull(node("downloaded_as_string").InnerText),
EmptyStringToNull(node("elapsed_as_string").InnerText))
Next
Catch ex As Exception
End Try
End Sub
答案 0 :(得分:0)
尝试将代码的相关部分更改为:
nodes = root.SelectNodes("//XMLDocument/Books/Book") 'The XMLPath
Me.DataGridView1.Rows.Clear() 'Clear Grid
For Each node In nodes
Me.DataGridView1.Rows.Add(EmptyStringToNull(node("row").GetAttribute("id")),
EmptyStringToNull(node("row")("data_rate_in_as_string").InnerText),
EmptyStringToNull(node("row")("data_rate_out_as_string").InnerText),
EmptyStringToNull(node("row")("downloaded_as_string").InnerText),
EmptyStringToNull(node("row")("elapsed_as_string").InnerText))
Next
以上修正的内容摘要:
/
).GetAttribute()
函数获取XmlNode
<row>
的孩子
元素,因此您需要在node("row")
醇>