如何使用类似于ASP.NET的模板创建XML文件
我需要在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程序员都应该是易于理解的。