1

我做了很多系统编程,其中我的应用程序无法用于通过网络进行通信或通过浏览器查看。但是,管理层一直在推动使用 XML。例如,如果我想保留时间日志,我可以使用这样的文本文件:

命令日期时间项目
在 2008/09/23 08:00:00 PROJ1
更改 2008/09/23 09:00:00 PROJ2
出 2008/09/23 12:00:00 PROJ2
在 2008/09/23 01:00: 00 PROJ3
出 2008/09/23 05:00:00 PROJ3

XML 看起来像这样:

<timelog> <timecommand cmd=in date=2008/09/23 time=8:00:00 proj=PROJ1/>
...
<timecommand cmd=out date=2008/09/23 time=5:00:00 proj=PROJ3/>
</timelog>

我看到的文本版本的一些初始优势是它易于阅读和使用正则表达式解析。在这种情况下使用 XML 有什么好处?

4

11 回答 11

2

我想到了几个好处:

  • 更容易解析到其他应用程序中
  • 文件内容一目了然更容易理解
  • 更容易将数据拉入管理仪表板
  • 让管理为您带来快乐,少痛苦

在我看来,缺点是:

  • 意味着更改现有代码,可能是不必要的
  • 性能可能会略有下降,具体取决于您构建文档的方式与构建当前文档的方式相比
  • 为了 XML 的缘故,它是 XML,这太愚蠢了

最后,引用一句讽刺的话:XML 就像暴力。如果它不能解决你的问题,那是你使用的不够多

于 2008-09-24T13:05:27.437 回答
2

使用基于文本的数据格式绝对没有错。几十年来,它一直是事实上的标准。大型大型机金融系统今天仍在使用它。好处是它的生产微不足道,消费微不足道,而且非常轻巧。那么日志文件呢?您是否知道任何以分隔文本格式(Web、应用程序、数据库服务器)生成其日志文件的生产平台?

纯文本文件的缺点是,如果格式发生变化,那么您必须对生产者端和消费者端都进行修改以支持格式更改。当然,如果只是一个人消费结果,那么你只需要改变生产者。

XML 的美妙之处在于数据的解析不仅独立于数据,而且独立于数据的格式。从逻辑上讲,您将数据和数据格式都传递给它,然后就可以了!一切正常。这并不是那么简单,但这就是前提。您可以更改数据的格式,您的生产者和消费者只需进行微不足道的更改(如果有的话)。

XML 的丑陋之处在于它可能是一个巨大的性能狗(SOAP 任何人?)和非常重的重量。你肯定会为它的可扩展性付出代价。在某些情况下,它绝对是给定问题域的优化技术解决方案,而在其他情况下则不是。

因此,如果它是人类可以阅读的简单日志,请将其保留为平面文件。如果它是一个简单的应用程序与另一个应用程序通信,并且通信不会随着时间的推移而发生巨大变化,那么平面文件肯定会更快更轻地实现,但 XML 不是一个糟糕的选择。如果多个应用程序需要使用您提供的数据,或者通信更改量会很大,那么请使用 XML。如果您这样做,界面的维护将随着时间的推移更容易维护。

于 2008-09-24T14:00:01.737 回答
1

在这种情况下,XML 的主要特点是可以验证和控制 XML。在文本版本中,您将如何以编程方式验证文件格式是否正确?XML 旨在创建结构化的有效文档,由此产生的好处是格式受到严格控制且结构可靠。维护从 XML 节点读取的代码也将比维护一系列用于读取文本文件的正则表达式更容易且布局更合理。

于 2008-09-24T13:08:09.783 回答
1

如果您使用 XML,那么在某些方面,数据会更“便携”。在大多数环境中,您基本上都可以使用数据解析器,因此编写一个分析数据的工具可能会更容易。此外,如果它是 XML,那么您可以编写一个 XSLT 将其转换为各种其他格式,使其更易于阅读。

也就是说,如果您改用 XML,即使是像您提供的示例这样的简单格式,您的日志文件也会变得更大。

除了 XML 之外,您还可以使用一些选项。Jeff 的Angle Bracket Tax博客文章谈到了这一点。

实际上,您应该做的是找出这些日志将如何使用,然后确定哪种格式可以使这些用法最容易实现。

于 2008-09-24T13:12:36.060 回答
0

使用 regex 和 xml 和 xsl 很容易解析它。

说实话,除非您将数据发送到另一个系统,否则使用 XML 并没有真正的“优势”。

于 2008-09-24T13:06:14.750 回答
0

XML 是一种元格式,这意味着它可以更轻松地为数据定义格式。这使得多个程序(包括不同公司的程序)更容易以相同格式读取和写入数据。它特别适合作为复杂、分层数据的描述。

在您上面概述的示例中,数据看起来是固定格式的独立记录,没有结构或层次结构 - 在这种情况下,我看不出使用 XML 的优势。但是,该示例可能不具代表性 - 您的其他文件可能包含更多结构化数据。

于 2008-09-24T13:08:15.183 回答
0

那是一个持续的日志文件吗?

您将如何编写来创建有效文档?还是您要读入,添加新条目,然后每次都写出来?

日志文件是您只需附加到结构良好的纯文本行的完美候选者。

于 2008-09-24T13:13:28.150 回答
0

在大多数情况下(并非总是如此),XML 使理解数据变得更容易,因为突然之间,您的资产周围有了元数据,描述了您面前的内容(人类可读)。

XML 也非常易于访问。我的意思是——既然你提到了它——你不想在 XML 上使用正则表达式。有像XPATH(XML 路径语言)这样的工具可以让查询 XML 变得有趣。当您可以使用 XPATH 之类的东西轻松地遍历 XML 时,无需抽出其他人无法阅读的内容。

在某些情况下,XML 会做相反的事情(在可读性方面),有时 XML 也是开销。当您在系统之间交换数据时,它并不总是最好的选择(例如,看看像JSON这样非常轻量级的东西)。而且这种交换也不需要在网络上。

于 2008-09-24T13:14:44.107 回答
0

虽然将 XML 用于数据文件意味着您的数据可以自我描述并且可能组织得更好,但最终结果通常是比以前大得多的数据文件。

问问自己,这些文件是用来做什么的?他们要改变吗?如果是这样,谁在支付,谁为它做预算?

在某些情况下我喜欢 XML,而在其他情况下我讨厌它!

于 2008-09-24T13:14:51.687 回答
0

在像您所说的系统批处理编程的情况下,xml 的一个主要特性是它几乎在所有地方都受支持。因此,您今天使用 xml 编写了一个程序来处理一些数据,而在 10 年后,当您需要彻底检查该程序并希望使用完全不同的平台时,您的 xml 数据仍然会得到很好的支持。

于 2008-09-24T13:21:34.043 回答
0

如果您使用 .NET(尤其是带有 LINQ to XML 的 .NET 3.5)进行开发,那么与仅使用纯文本文件相比,您将编写更少的代码来读取/写入 XML。另外,XML 只是让任何下线的人都可以更轻松地阅读文件并准确了解其中的内容和用途。而且,不用担心 XML 占用更多的磁盘空间,磁盘空间很便宜。

于 2008-09-24T13:30:58.483 回答