Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 增量交换格式_Xml_Json - Fatal编程技术网

Xml 增量交换格式

Xml 增量交换格式,xml,json,Xml,Json,我需要一种格式将数据从程序a传输到程序B,显然我更喜欢使用标准格式。从表面上看,XML非常适合这项工作,也可能是JSON 美中不足的是,我需要的格式是增量的:程序A不时地将数据附加到文件中,然后程序B在文件准备好后将整个文件吞下。据我所知,XML和JSON都不能做到这一点,因为它们都要求文件中只有一个顶级元素 我有什么遗漏吗 澄清: 我需要XML提供而CSV不提供的那种结构。(好吧,我可以制作一个CSV的变种,其他任何东西都读不懂,但这正是我试图避免的。) A不知道何时完成(取决于用户操作、网络

我需要一种格式将数据从程序a传输到程序B,显然我更喜欢使用标准格式。从表面上看,XML非常适合这项工作,也可能是JSON

美中不足的是,我需要的格式是增量的:程序A不时地将数据附加到文件中,然后程序B在文件准备好后将整个文件吞下。据我所知,XML和JSON都不能做到这一点,因为它们都要求文件中只有一个顶级元素

我有什么遗漏吗

澄清:

我需要XML提供而CSV不提供的那种结构。(好吧,我可以制作一个CSV的变种,其他任何东西都读不懂,但这正是我试图避免的。)


A不知道何时完成(取决于用户操作、网络连接的可用性和其他不可预测的变量),因此A不能说“现在我将写入最后一个结束标记并向B移交”,因为A可能会在B之前再次调用。CSV如何?易于编写-如果您知道格式并且不需要额外的元信息,则易于解析。

如果我理解正确,则工作流如下所示:

  • 在一段时间内,A正在建立数据以放入文件中
  • 一旦准备好了,B就把整个东西都吃掉了
在本例中,XML和JSON都很好,因为有一个明显的点a在工作,而B在处理文件之前不会开始使用文件(而不是像始终打开的流那样不断地提供数据)

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

因此a始终需要编写格式良好的文件,以便B可以随时读取它

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


A可以在每次更新时写入此内容。这里的问题是,编写一个文件需要有限的时间,并且您不希望B读取部分写入的文件。这里需要某种形式的文件完整性信号(使用临时文件作为信号量、重命名等)

我不会签署“易于解析”,因为大多数应用程序对CSV到底是什么有一些不同的看法(想想分隔符和转义,以及转义的转义)。当然,也就是说,除非你同时控制两个应用程序,只使用“你的”CSV格式。你完全正确。我负责控制这两个应用程序。然后就很容易解析了,因为您可以指定格式。