读取嵌入XML文件

时间:2016-02-17 11:26:21

标签: xml vb.net embed

我尝试读取作为嵌入式资源的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 -->

1 个答案:

答案 0 :(得分:1)

您可以使用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文件(您可能需要将文件类型过滤器设置为“数据文件”)并双击该文件以将其副本添加到你的项目。最后,在Solution Explorer中单击该文件以显示属性,并将Build Action属性更改为“Embedded Resource”。