【问题标题】:XML to HTML in .net.net 中的 XML 到 HTML
【发布时间】:2011-07-03 17:44:45
【问题描述】:
<?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 表格以列出所有行和行标题,以便我可以在我的网页上显示。

【问题讨论】:

  • 您是否考虑过使用XSLT
  • @Donut,您应该将其发布为答案。因为这正是他们需要关注的。

标签: .net xml xml-parsing


【解决方案1】:

你应该使用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 问题,请随时在此处提问。

【讨论】:

    【解决方案2】:

    下面是一个合适的样式表的示例。当然,你必须根据你实际想要生成的 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。

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 2011-11-13
      • 2012-05-09
      • 2010-11-22
      • 2011-01-24
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多