将日志文件转换为 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,建议的主要内容,如果未能解决你的问题,请参考以下文章

如何将火花日志文件转换为一个 CSV 文件

如何将 XML 文件(在本例中为业务流程事件日志)导入和查询到 SQL Server Express?

XHTML 到 XML XSLT 的转换

在 C# 中将日志文件转换为 pcap 文件

在 Oracle 触发器中将新行转换为 XML

怎么用JAVA实现XML到PDF的转换?