在asp.net MVC c#应用程序中用XML创建HTML表

本文关键字:XML 创建 HTML 应用程序 asp net MVC | 更新日期: 2023-09-27 17:49:43

我计划了一个新的应用程序。我的想法是,生成XML文档。我需要一种方法将这个XML文档转换为HTML表。

我的XML结构是:
<Checklist>
  <Title>Titletext</Title>
     <Group>
       <Title>Active Directory</Title>
       <Content>
        <Line>
          <text type="array">
            <value>Connect to:</value>
            <value>dsa.msc start</value>
          </text>
         </Line>
         <Line>
          <text type="array">
            <value>Gruppen anpassen anhand des Arbeitsortes</value>
            <value>Profilpfad eintragen</value>
          </text>
         </Line>
       </Content>
     </Group>
   </Checklist>

我将尝试将此xml转换为HTML表,如下所示:

<html>
  <table>
    <tr class="head">
      <td>#Group -> Title</td>
    </tr>
    <tr class="text">
      <td><p>#Line -> Value 1</p><p>@Line -> Value2</p></td>
    </tr>
  </table>
</html>

我的第一个想法是,逐行读取XML,并将这些值添加到ListArray中。使用foreach,我将尝试生成HTML

foreach(string item in ViewBag.Content)

是否有更好的选择,或者我应该尝试用这种方式解决这个问题=)也许有人能给我一个最佳实践提示或什么=)

谢谢!

在asp.net MVC c#应用程序中用XML创建HTML表

最好的选择是使用可扩展样式表语言(XSL)。您可以使用XSL转换(XSLT)在xml中创建模板,这些模板列出了如何将xml转换为另一种格式的规则。在您的例子中,模板类似于:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html>
        <body>
            <table border="1">
                <tr>
                    <th><xsl:value-of select="Checklist/Title/Group/Title" /></th>
                </tr>
                <xsl:for-each select="Checklist/Group/Content/Line">
                    <tr>
                        <td>
                            <xsl:for-each select="Value">
                                <p><xsl:value-of select="value" /></p> 
                            </xsl:for-each>
                        </td>
                    </tr>
               </xsl:for-each>
           </table>
       </body>
   </html>
</xsl:template>

这里有一个关于W3Schools的好例子,这个答案告诉你如何在c#中实现它。

有一个标准的方法:

http://www.w3schools.com/xsl/

查看MVC集成的示例

首先,我要创建一个类来表示表的一行——一个模型。

那么我会使用LINQ to XML将XML文件转换为模型类的对象列表。

然后,而不是把它放在ViewBag中,我把模型对象列表作为视图的模型(它可以是强类型的)。在控制器中,你可以这样返回视图:

List<MyModel> items = ....
return View(items)

最后我在Razor中像这样遍历它:

@foreach(var item in Model){ // the Model here is whatever you passed to the View method call in your controller
   // create table rows or whatever you need
}