[英]Create HTML Table with XML in a asp.net MVC C# Application
我已经计划了一个新的应用程序。 我的想法是生成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)
有很多“更好”的选择,还是我应该尝试通过这种方式解决此问题=)也许有人可以给我一个最佳实践的提示或其他东西=)
谢谢!
最好的选择是使用可扩展样式表语言( XSL )。 您可以使用XSL Tansformations( 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>
首先,我将创建一个代表表的一行的类-一个模型。
比起我,我将使用LINQ to XML将xml文件转换为模型类的对象列表。
比起将模型对象列表放置为View的模型(可以将其强类型化),而不是将其放置到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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.