利用 XmlDataSource 讀取 XML 並顯示於 Gridview

摘要:利用 XmlDataSource 讀取 XML 並顯示於 Gridview

  .Net 提供了很多的方式可以來存取 XML 檔案,包含很重要的 web.config 都可以用 System.Configuration.ConfigurationManager.AppSettings["ConnString"].ToString()抓取資料庫連線 ConnectionString 的設定值,也可以用System.Web.Configuration.WebConfigurationManager.AppSettings("xstring")」抓 appsettings 的設定值,那怎麼利用 XmlDataSource 來讀取 XML 檔案呢?

使用元件:

  • XmlDataSource
  • Gridview

必要檔案:

--------------

XML 檔案格式:這是一個格式蠻簡單的XML檔案,內容也都用 Element 來表示

<NewDataSet>
  <zip32>
    <zipcode>10070</zipcode>
    <city>台北市</city>
    <area>中正區  </area>
    <road>三元街                </road>
    <scoop>  48號以下                        </scoop>
  </zip32>
  <zip32>
    <zipcode>10667</zipcode>
    <city>台北市</city>
    <area>大安區  </area>
    <road>大安路2段            </road>
    <scoop>雙全                                </scoop>
  </zip32>
</NewDataSet>

PS:謎......我也不知道為何中華郵政要有那些空格!

瞭解了XML檔案的格式後,我們就要用轉換檔 XSL 來描述此XML文件的格式,並決定要匯出哪些欄位的內容。如果是 Element 就用下列格式匯出,如果是 Attribute 就在  <xsl:value-of select="@zipcode"/> 多加@符號。

<?xml version="1.0"?>
<xsl:stylesheet
   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msxsl="urn:schemas-microsoft-com:xslt"> 
    <xsl:strip-space elements="*"/>
    <xsl:output method="xml"
        omit-xml-declaration="yes"
        indent="yes"
        standalone="yes" />
    <xsl:template match="/">
        <xsl:for-each select="NewDataSet">
            <xsl:element name="NewDataSet">
                <xsl:for-each select="zip32">
                    <xsl:element name="zip32">
                        <xsl:attribute name="zipcode">
                            <xsl:value-of select="zipcode"/> 
                        
</
xsl:attribute>
                        <xsl:attribute name="city">
                            <xsl:value-of select="city"/>
                        </xsl:attribute>
                        <xsl:attribute name="area">
                            <xsl:value-of select="area"/>
                        </xsl:attribute>
                        <xsl:attribute name="road">
                            <xsl:value-of select="road"/>
                        </xsl:attribute>
                        <xsl:attribute name="scoop">
                            <xsl:value-of select="scoop"/>
                        </xsl:attribute>
                    </xsl:element>
                </xsl:for-each>
            </xsl:element>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

註:XSL 的使用範圍並不限於此,他還可以用來把XML轉換成HTML...等等功能(搜尋XSL)。

從上面的XSL檔案,可以看出他用<xsl:for-each select="NewDataSet">方式跑結構性的讀取,若要取出某一 Element或 Attribute ,則用<xsl:attribute name="scoop">方式讀出。

--------------

拉一拉~點一點~ XmlDataSource 與 Gridview 元件後,便可以不寫一行程式,就將XML檔案以表格的方式呈現了。



Reference: