将日志文件转换为 XML 和(XHTML,建议
Posted
技术标签:
【中文标题】将日志文件转换为 XML 和(XHTML,建议【英文标题】:Converting log files to XML and (X)HTML, recommendedations 【发布时间】:2010-11-11 11:27:18 【问题描述】:我的任务是从我继承的测试报告工具转换一些文本日志文件。该工具是一个已编译的 C# (.NET 3.5) 应用程序。
我想将一组逻辑连接的日志文件解析并转换为单个 XML 报告文件,这不是问题。 System.Xml 类很容易使用。
但是,我还想为每个报告创建一个更“可读”的文件。我选择了 html,因为我喜欢标准化,所以我更喜欢使用适当的 XHTML。
我的问题是我应该如何创建 HTML 文件以及 XML 报告?我最初的想法是构建 XML 文件,然后使用 LINQ 和简单的 StreamWriter 在我的 C# 代码中构建 HTML 文件。我还可以使用 XSLT 而不是 LINQ 来简化 C# 代码。但由于无论如何我都必须编译它,我不喜欢在安装/分发中添加更多文件的想法。
与 XSLT 相比,使用 LINQ 会给我带来什么问题吗?是否有任何符合 XHTML 的、用于 .NET 的优秀 HTML 编写库?由于我已经从工作内存中的日志文件中解析了所有内容,有没有一种简单的方法可以轻松地同时创建两个文件?
【问题讨论】:
【参考方案1】:使用 XSLT 的一个好处是您可以在 XML 的顶部放置一条处理指令,告诉用户的浏览器如何自己生成报告:
<?xml-stylesheet type="text/xsl" href="Your_XSLT.xslt"?>
这样您就不必有单独的步骤来生成报告。用户只是直接在浏览器中打开 XML 文件,但他们看到的是生成的报告。
【讨论】:
【参考方案2】:我实际上建议使用 XSL 转换。由于您已经拥有 XML 文档。如果您编写了一个好的 XSL 转换,您将获得非常好的结果。
http://www.w3schools.com/xsl/xsl_transformation.asp
小sn-p:
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load(HttpContext.Current.Server.MapPath(xslPath));
StringBuilder sb = new StringBuilder();
using (TextWriter tw = new StringWriter(sb))
// Where the magic happens
xsl.Transform(xmlDoc, null, tw);
//return of text which you could save to file...
return sb.ToString();
【讨论】:
我假设,transform 方法只是将样式表头放入 XML 文件?对吗? 我提供的代码 sn-p 中没有来自电子邮件工具,该工具获取 xml 数据并将其转换为要注入电子邮件正文的 html。 取决于你的目标?如果您希望最终用户进行转换,那么标头可以正常工作...但有时您可能只想处理 1 次并发送 html...取决于您的用例 好的,我明白了。我可以选择将样式表链接直接放在 XML 中,或者实际转换为独立的 HTML。 没错,无论哪种方式,您都需要编写一个好的 xsl,这将是最困难的部分......但是一旦你这样做......它就是小菜一碟 :)【参考方案3】:我会创建一个 xslt 转换并针对 XML 运行它。 Linq 并非旨在将一种模式(例如,您的报告)的 XML 转换为另一种模式(例如,xhtml)。你可以暴力破解它,但 xslt 是一种优雅的方式。
【讨论】:
谢谢,那么我将使用 XSLT。从所有答案看来,这肯定是最好的解决方案。以上是关于将日志文件转换为 XML 和(XHTML,建议的主要内容,如果未能解决你的问题,请参考以下文章