1

このようなデータをインポートしている場合、機能しません。

デバッグも表示されます

「System.Xml.dll で、タイプ 'System.Xml.XmlException' の初回例外が発生しました」

<?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を保持したいので、データグリッドビューにも追加したいと思います。

これが役立つ場合、これまでのところプロジェクトコードです。

    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
4

1 に答える 1