增量交换格式

时间:2009-04-22 10:57:59

标签: xml json

我需要一种格式来将数据从程序A传输到程序B,显然我更喜欢使用标准格式。从表面上看,XML对于这项工作来说是完美的,或者可能是JSON。

美中不足的是我需要格式化为增量:程序A不时地将数据附加到文件中,然后程序B在准备就绪时啜饮整批。根据我的阅读,XML和JSON都不能这样做,因为它们都只需要一个文件中的一个顶级元素。

我有什么遗漏吗?

澄清:

我需要XML提供的结构,而CSV则不需要。 (好吧,我可以制作一个CSV的突变变种,没有别的东西可以读,但这就是我想要避免的。)

A不知道什么时候会完成(取决于用户操作,网​​络连接的可用性和其他不可预测的变量),所以A不能说“现在我会写最后一个结束标签并切换到B”因为A可能会在B之前再次被调用。

3 个答案:

答案 0 :(得分:1)

所以A 总是需要编写一个格式正确的文件,以便B可以随时读取它。

如果您使用XML(这似乎是合适的),您将始终必须编写格式良好的文档(例如,在其中包含一个根节点和子节点)。因此,您必须在流程中维护DOM对象。根据内存消耗情况,这可能很好。

每当有更新时,A都可以写这个。这里的问题是编写文件需要花费有限的时间,而且你不希望B读取部分写入的文件。此处将需要某种形式的信号表明文件已完成(使用临时文件作为信号量,重命名等)。

答案 1 :(得分:0)

CSV怎么样?易于编写 - 如果您知道格式并且不需要额外的元信息,则易于解析。

答案 2 :(得分:0)

如果我理解正确,工作流程如下:

  • 在一段时间内,A正在建立数据以放入文件
  • 一旦准备就绪,B就会消耗整件事。

在这种情况下,XML和JSON都很好,因为A有一个明显的点,A处于工作状态,B在处理之前不会开始使用该文件(而不是像持续开放的流一样开放的流)数据)。

在.NET之类的东西中,您可以使用根元素创建一个XmlDocument,并继续向其添加节点,直到完成为止。