读取嵌入 XML 文件
Reading embedding XML file
我正在尝试读取作为嵌入式资源的 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"
引用嵌入图像也很容易。这是按如下方式完成的(组合框在这种情况下提供文件名):
'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 -->
您可以使用 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 文件(您可能需要将文件类型过滤器设置为 "Data files")并双击该文件以添加副本它到你的项目。最后,在Solution Explorer中点击文件显示属性,将Build Action 属性改为"Embedded Resource".
我正在尝试读取作为嵌入式资源的 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"
引用嵌入图像也很容易。这是按如下方式完成的(组合框在这种情况下提供文件名):
'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 -->
您可以使用 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 文件(您可能需要将文件类型过滤器设置为 "Data files")并双击该文件以添加副本它到你的项目。最后,在Solution Explorer中点击文件显示属性,将Build Action 属性改为"Embedded Resource".