如何使用类似于ASP.NET的模板创建XML文件

时间:2020-03-06 14:55:18  来源:igfitidea点击:

我需要在C#中生成一个XML文件。

我想像在ASP.NET MVC页面中那样,将生成此代码的代码写在一个文件中,该文件主要是XML,其中包含代码。

所以我想要一个看起来像这样的代码文件:

<lots of angle brackets...>

  <% foreach(data in myData)
     { %>

     < <%= data.somefield %>

  <% } %>

More angle brackets>

这将生成我的XML文件。如果有人告诉我如何在没有IIS开销或者不生成Web文件的情况下做到这一点,我不介意使用" System.Web"的一部分。

我想要使​​用模板,并且想要类似于ASP.NET的模板

解决方案

在标准ASPX文件中创建PageView,但不包括母版或者其他任何内容。刚开始放入尖括号和其他所有内容。我们需要做的一件事就是设置内容类型。但这可以通过调用Response.ContentType =" text / xml"在操作中完成;

MvcContrib中有一个XSLT View Enging:
http://mvccontrib.googlecode.com/svn/trunk/src/MvcContrib.XsltViewEngine/

这可能会给我们我们所需要的。

(实际上,任何视图引擎都可以使用,尽管WebForms视图引擎会抱怨我们所编写的内容不是有效的HTML。

首先,它的MUCH更容易使用XElements生成XML。周围有很多例子。只需搜索" Linq to XML"。

另外,如果我们绝对需要做模板,我建议我们使用诸如NVelocity之类的模板引擎,而不要试图使ASP.NET为我们做这件事。

通过代码执行此操作的最简单方法是使用System.Xml中的XMLWriter类。

教程在这里。

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = ("    ");
using (XmlWriter writer = XmlWriter.Create("books.xml", settings))
{
    // Write XML data.
    writer.WriteStartElement("book");
    writer.WriteElementString("price", "19.95");
    writer.WriteEndElement();
    writer.Flush();
}

除了上述用途之外,还使用了Linq附带的新XML类,它们使逻辑生成XML变得容易得多,尽管我们不会像C#中的模板那样。

如果我们确实需要像then这样的模板,而我知道这样做不一定会失败,那么我们应该看一下在VB.NET中做系统的这一部分,它确实对XML生成等模板提供了明确的支持,并将其作为Linq的一部分。 XML实施。至少,在关闭它之前,我们应该查看VB.NET提供的内容。

.NET的性质意味着我们不必将VB.NET用于其他任何事情,我们可以将其限制为进行XML生成及其"泛型"所必需的类(从它附带的意义上来说)。 NET和周围的逻辑对于任何称职的.NET程序员都应该是易于理解的。