读取嵌入 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".