将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
答
下面是一个合适的样式表可能是什么样子的例子。您必须根据您实际想要生成的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 answer和this 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问题,请不要犹豫在此问问。
你使用[XSLT](http://en.wikipedia.org/wiki/XSLT)了解了吗? – Donut 2011-02-24 17:11:10
不,我没有使用XSLT – 2011-02-24 17:15:25
@Donut,你应该将其作为答案发布。因为这正是他们需要看的。 – 2011-02-24 17:18:13