将XML转换为HTML中的.net

问题描述:

<?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

下面是一个合适的样式表可能是什么样子的例子。您必须根据您实际想要生成的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。

您应该使用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问题,请不要犹豫在此问问。