2011-02-24 65 views
2
<?xml version="1.0" encoding="UTF-8"?> 
<Advanced_IP_scanner> 
    <row ip="10.10.1.4" status="1" name="remote003.domain.local" has_http="0" has_https="0" has_ftp="0" has_radmin_1="0" has_radmin_2="0" has_radmin_3="0" has_radmin_4="0"> 
     <share name="ADMIN$"/> 
     <share name="C$"/> 
     <share name="IPC$"/> 
    </row> 
    <row ip="10.10.1.12" status="1" name="remote005.domain.local" has_http="0" has_https="0" has_ftp="0" has_radmin_1="0" has_radmin_2="0" has_radmin_3="0" has_radmin_4="0"> 
     <share name="ADMIN$"/> 
     <share name="C$"/> 
     <share name="IPC$"/> 
    </row> 
</Advanced_IP_scanner> 

如何將上述XML轉換爲簡單的HTML表格以列出所有行和行標題,以便我可以在我的網頁上顯示。將XML轉換爲HTML中的.net

+2

你使用[XSLT](http://en.wikipedia.org/wiki/XSLT)瞭解了嗎? – Donut 2011-02-24 17:11:10

+0

不,我沒有使用XSLT – 2011-02-24 17:15:25

+0

@Donut,你應該將其作爲答案發布。因爲這正是他們需要看的。 – 2011-02-24 17:18:13

回答

1

下面是一個合適的樣式表可能是什麼樣子的例子。您必須根據您實際想要生成的HTML來適應它。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="Advanced_IP_Scanner"> 
    <html> 
     <head> 
     <title>Ip Scanner Table</title> 
     </head> 
     <body> 
     <table> 
      <thead> 
      <tr> 
       <th>...</th> 
       <th>...</th> 
       ... 
      </tr> 
      </thead> 
      <tbody> 
      <xsl:apply-templates/> 
      </tbody> 
     </table> 
     </body> 
    </html> 
    </xsl:template> 
    <xsl:template match="row"> 
    <tr> 
     <td><xsl:value-of select="@ip"/></td> 
     <td><xsl:value-of select="@name"/></td> 
     <td><xsl:value-of select="@status"/></td> 
     <td><xsl:value-of select="@has-http"/></td> 
     .... 
    </tr> 
    </xsl:template> 
</xsl:stylesheet> 

有幾種XSLT處理器可用於.NET。 Microsoft與.NET捆綁在一起,只支持XSLT 1.0(這對於這樣的簡單任務來說很好,但在更復雜的轉換中耗盡了)。有兩個支持XSLT 2.0的獨立處理器 - 我自己的Saxon產品,它已經很好地建立和廣泛使用,並且是最近到來的XQSharp。

3

您應該使用XSLT,它是專門爲此任務設計的。
的代碼是什麼樣子的一個例子如下(感謝this answerthis page):

XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ; 
XslCompiledTransform myXslTrans = new XslCompiledTransform(); 
myXslTrans.Load(myStyleSheet); 
XmlTextWriter myWriter = new XmlTextWriter("result.html",null); 
myXslTrans.Transform(myXPathDoc,null,myWriter); 

希望這有助於。如果您有進一步的XSLT問題,請不要猶豫在此問問。