我正在尝试读取一个作为嵌入式资源的XML文件,并使用它创建一个DataSet。
通常我会访问xml文件,如下所示..。
'THIS SECTION POPULTATES THE DATAGRIDVIEW WITH STOCK INFORMATION MADE AVAILABLE IN THE XML DOCUMENT (Stock.xml)...
Dim filepath As String = (IO.Directory.GetCurrentDirectory & "\Stock.xml")
Dim DS_CUSTOMERS As New DataSet
DS_CUSTOMERS.ReadXml(filepath)
Dim DS_CUSTOMERS As New DataSet
DS_CUSTOMERS.ReadXml(rm123.GetObject("Stock.xml"))
DataGridView1.DataSource = DS_CUSTOMERS.Tables(0)
DataGridView1.DataSource = DS_CUSTOMERS
DataGridView1.DataMember = "Data"引用嵌入的图像也很容易。这样做如下(在本例中Combobox提供文件名):
'This loads the embeded recource image...
Dim rm As Resources.ResourceManager
rm = New Resources.ResourceManager("Load_Calculator.resources", System.Reflection.Assembly.GetExecutingAssembly)
PictureBox1.Image = rm.GetObject(ComboBox1.Text)现在,我的逻辑(这是错误的)是将这两种代码进行混合,然后执行以下操作,但是在调试时,我什么也得不到。
'THIS SECTION POPULTATES THE DATAGRIDVIEW WITH STOCK INFORMATION MADE AVAILABLE IN THE XML DOCUMENT (Stock.xml)...
Dim rm123 As Resources.ResourceManager
rm123 = New Resources.ResourceManager("Load_Calculator.resources", System.Reflection.Assembly.GetExecutingAssembly)
Dim DS_CUSTOMERS As New DataSet
DS_CUSTOMERS.ReadXml(rm123.GetObject("Stock.xml"))
DataGridView1.DataSource = DS_CUSTOMERS.Tables(0)
DataGridView1.DataSource = DS_CUSTOMERS
DataGridView1.DataMember = "Data"以及xml文件如下:
<COMPELATION>
<Data>
<TTN>Select a Truss-System...</TTN>
<FJQ></FJQ>
<TTH></TTH>
<TTW></TTW>
<FCT></FCT>
<MTD></MTD>
<MTT></MTT>
<DVB></DVB>
<TVB></TVB>
<DTP></DTP>
<MAT></MAT>
<TSW></TSW>
</Data>
<Data>
<TTN>FD33</TTN>
<FJQ>3x</FJQ>
<TTH>257,85 mm</TTH>
<TTW>290 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>2 mm</MTT>
<DVB>20 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,044 kN/m</TSW>
</Data>
<Data>
<TTN>FD34</TTN>
<FJQ>4x</FJQ>
<TTH>290 mm</TTH>
<TTW>290 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>2 mm</MTT>
<DVB>20 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,058 kN/m</TSW>
</Data>
<Data>
<TTN>HD33</TTN>
<FJQ>3x</FJQ>
<TTH>257,85 mm</TTH>
<TTW>290 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>3 mm</MTT>
<DVB>20 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,055 kN/m</TSW>
</Data>
<Data>
<TTN>HD34</TTN>
<FJQ>4x</FJQ>
<TTH>290 mm</TTH>
<TTW>290 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>3 mm</MTT>
<DVB>20 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,074 kN/m</TSW>
</Data>
<Data>
<TTN>HD33</TTN>
<FJQ>3x</FJQ>
<TTH>257,85 mm</TTH>
<TTW>290 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>3 mm</MTT>
<DVB>20 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,055 kN/m</TSW>
</Data>
<Data>
<TTN>HD34</TTN>
<FJQ>4x</FJQ>
<TTH>290 mm</TTH>
<TTW>290 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>3 mm</MTT>
<DVB>20 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,074 kN/m</TSW>
</Data>
<Data>
<TTN>FD44</TTN>
<FJQ>3x</FJQ>
<TTH>400 mm</TTH>
<TTW>400 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>2 mm</MTT>
<DVB>25 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,075 kN/m</TSW>
</Data>
<Data>
<TTN>FD43</TTN>
<FJQ>3x</FJQ>
<TTH>353,11 mm</TTH>
<TTW>400 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>3 mm</MTT>
<DVB>25 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,059 kN/m</TSW>
</Data>
<Data>
<TTN>HD44</TTN>
<FJQ>4x</FJQ>
<TTH>400 mm</TTH>
<TTW>400 mm</TTW>
<FCT>SC1-CON</FCT>
<MTD>50 mm</MTD>
<MTT>3 mm</MTT>
<DVB>25 mm</DVB>
<TVB>2 mm</TVB>
<DTP>12 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,081 kN/m</TSW>
</Data>
<Data>
<TTN>XD</TTN>
<FJQ>4x</FJQ>
<TTH>400 mm</TTH>
<TTW>290 mm</TTW>
<FCT>SC2-CON</FCT>
<MTD>50 mm</MTD>
<MTT>3 mm</MTT>
<DVB>25 mm</DVB>
<TVB>3 mm</TVB>
<DTP>16 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,085 kN/m</TSW>
</Data>
<Data>
<TTN>ST</TTN>
<FJQ>4x</FJQ>
<TTH>500 mm</TTH>
<TTW>500 mm</TTW>
<FCT>SC3-CON</FCT>
<MTD>50 mm</MTD>
<MTT>4 mm</MTT>
<DVB>30 mm</DVB>
<TVB>3 mm</TVB>
<DTP>16 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,134 kN/m</TSW>
</Data>
<Data>
<TTN>FT50</TTN>
<FJQ>4x</FJQ>
<TTH>521,10 mm</TTH>
<TTW>570 mm</TTW>
<FCT>SC3-CON</FCT>
<MTD>50 mm</MTD>
<MTT>4 mm</MTT>
<DVB>25 mm</DVB>
<TVB>3 mm</TVB>
<DTP>16 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,135 kN/m</TSW>
</Data>
<Data>
<TTN>XT</TTN>
<FJQ>4x</FJQ>
<TTH>800 mm</TTH>
<TTW>570 mm</TTW>
<FCT>CS3-CON</FCT>
<MTD>50 mm</MTD>
<MTT>4 mm</MTT>
<DVB>40 mm</DVB>
<TVB>3 mm</TVB>
<DTP>16 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,200 kN/m</TSW>
</Data>
<Data>
<TTN>TT</TTN>
<FJQ>4x</FJQ>
<TTH>1010 mm</TTH>
<TTW>580 mm</TTW>
<FCT>SC3-CON</FCT>
<MTD>60 mm</MTD>
<MTT>5 mm</MTT>
<DVB>50 mm</DVB>
<TVB>3 mm</TVB>
<DTP>16 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,250 kN/m</TSW>
</Data>
<Data>
<TTN>FT100</TTN>
<FJQ>4x</FJQ>
<TTH>986 mm</TTH>
<TTW>580 mm</TTW>
<FCT>CS3-CON</FCT>
<MTD>60 mm</MTD>
<MTT>5 mm</MTT>
<DVB>50 mm</DVB>
<TVB>3 mm</TVB>
<DTP>16 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,220 kN/m</TSW>
</Data>
<Data>
<TTN>MT</TTN>
<FJQ>4x</FJQ>
<TTH>1180 mm</TTH>
<TTW>780 mm</TTW>
<FCT>CS4-CON</FCT>
<MTD>60 mm</MTD>
<MTT>5 mm</MTT>
<DVB>50 mm</DVB>
<TVB>3 mm</TVB>
<DTP>16 mm</DTP>
<MAT>6082 T6</MAT>
<TSW>0,220 kN/m</TSW>
</Data>
</COMPELATION>
<!-- TTN= Truss Type Name -->
<!-- FJQ= Face Joist Quantity -->
<!-- TTH= Total Truss Hight -->
<!-- TTW= Total Truss Width -->
<!-- MTD= Main Tube Diameter -->
<!-- FCT= Fiting/ Connection Type -->
<!-- MTT= Main Tube Thickness -->
<!-- DVB= Diameter Vertical Brace -->
<!-- TVB= Thickness Vertical Brace -->
<!-- DTP= Diameter Truss Pin -->
<!-- MAT= Material Type -->
<!-- TSW= Truss Self Weight -->发布于 2016-02-17 14:49:34
您可以使用GetManifestResourceStream方法(而不是GetObject)从嵌入式资源创建Stream。然后,您可以使用以DataSet.ReadXml作为参数的Stream重载来读取它。
Dim DS_CUSTOMERS As New DataSet
Dim asm As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly
Using rs As IO.Stream = asm.GetManifestResourceStream(asm.GetName.Name & ".Stock.xml")
DS_CUSTOMERS.ReadXml(rs)
End Using
DataGridView1.DataSource = DS_CUSTOMERS.Tables(0)
DataGridView1.DataMember = "Data"若要将现有XML文件作为嵌入式资源添加到项目中,请在“解决方案资源管理器”中右键单击该项目,然后选择“添加现有项目”.然后在“添加现有项”对话框中,导航到Stock.xml文件(可能需要将文件类型筛选器设置为“数据文件”),并双击该文件以将其副本添加到项目中。最后,单击解决方案资源管理器中的文件以显示属性,并将Build属性更改为"Embedded“。
https://stackoverflow.com/questions/35455393
复制相似问题