我无法让 vb.net 将 xml 文件加载到数据表中以在 datagridview 和其他文本元素中使用。我已经尝试了过去两天搜索中能找到的大部分解决方案,但似乎没有任何效果。据我所知,这应该只是一个简单的
DataSource.ReadXML
命令,但是当我执行此操作然后设置 DataGridVew1 数据源时,什么也没有显示。我尝试了多种读取数据表和数据源的组合,但都无法工作。
我不确定这里正确的方法是什么。我应该在数据集或数据表中使用“ReadXML”吗?如果我读入数据集,数据如何进入正确的表?现在我只使用 1 个表,但一旦我弄清楚了这一点,我将需要从多个不同的 xml 文件中读取数据并将它们放入不同的 DataTable 中。
这是我正在使用的 xml 文件的示例。我缩短了它,因为文档中有大约 100 条记录。这个 xml 文件是在 Excel 中生成的,以节省输入所有内容的时间:
<?xml version="1.0" encoding="utf-8" ?>
<BlankData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record>
<SizeNum>#1 - 45</SizeNum>
<Height>8</Height>
<Top>3</Top>
<Bottom>7.75</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
<record>
<SizeNum>#1 - 90</SizeNum>
<Height>8</Height>
<Top>1.75</Top>
<Bottom>11.25</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
<record>
<SizeNum>#10 - 45 </SizeNum>
<Height>20</Height>
<Top>4.875</Top>
<Bottom>16.75</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
<record>
<SizeNum>#10 - 90 </SizeNum>
<Height>14</Height>
<Top>1.125</Top>
<Bottom>19.5</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
<record>
<SizeNum>#11 - 45 </SizeNum>
<Height>23</Height>
<Top>6</Top>
<Bottom>21.375</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
</BlankData>
我通过添加新的 xml 文件项并将其命名为 BlankData 来将此 xml 文件添加到项目中。还有一个名为 PressData 的数据源和一个名为 BlankData 的表,它有 7 列,其名称与上面的 xml 示例相匹配。不确定让 ml 文件和数据表共享相同的名称是否正确,在这次迭代之前,我对 xml 文件和表名有不同的名称,但我无法让它工作,所以我决定尝试给它们提供相同的名称
我厌倦了使用下面的代码将 xml 加载到数据源
PressData.ReadXml(My.Application.Info.DirectoryPath & "\BlankData.xml")
DataGridView1.DataSource = PressData
这会导致一个空白的数据网格视图框
并且厌倦了使用此代码将 xml 加载到数据源内的数据表
PressData.BlankData.ReadXml(My.Application.Info.DirectoryPath & "\BlankData.xml")
DataGridView1.DataSource = PressData.BlankData
这会导致 datagridview 显示 7 列,但没有行数据。
我尝试了一些其他的小改变,但我无法开始工作。有人对尝试什么有什么建议吗? 正如我之前所说,这看起来应该很简单,但我所做的一切似乎都对结果没有任何影响,这只是上面两种情况之一。
我的 xml 文件是否有问题?
感谢您的帮助!
达里安
这是一个例子。首先是你的数据。
Dim xe As XElement
xe = <BlankData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record>
<SizeNum>#1 - 45</SizeNum>
<Height>8</Height>
<Top>3</Top>
<Bottom>7.75</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
<record>
<SizeNum>#1 - 90</SizeNum>
<Height>8</Height>
<Top>1.75</Top>
<Bottom>11.25</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
<record>
<SizeNum>#10 - 45 </SizeNum>
<Height>20</Height>
<Top>4.875</Top>
<Bottom>16.75</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
<record>
<SizeNum>#10 - 90 </SizeNum>
<Height>14</Height>
<Top>1.125</Top>
<Bottom>19.5</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
<record>
<SizeNum>#11 - 45 </SizeNum>
<Height>23</Height>
<Top>6</Top>
<Bottom>21.375</Bottom>
<Weight>0</Weight>
<TrimmedWeight>0</TrimmedWeight>
<Wrap>false</Wrap>
</record>
</BlankData>
然后创建数据集并读取 XML。没有表名。
Dim ds As New DataSet()
ds.ReadXml(xe.CreateReader)
Debug.WriteLine(ds.Tables(0).TableName) '<<<<<<<<<<<<<<<<<<<<<<<
然后将其中唯一的表分配给DataGridView
DataGridView1.DataSource = ds.Tables(0)