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_Schema_Metadata_Flat File_Data Integration - Fatal编程技术网

Xml 嵌入平面文件模式的良好约定

Xml 嵌入平面文件模式的良好约定,xml,schema,metadata,flat-file,data-integration,Xml,Schema,Metadata,Flat File,Data Integration,我们以平面文件的形式接收大量数据:定界记录或固定长度记录。有时很难找出文件实际包含的内容 在将文件的模式嵌入到文件的开头或结尾以使文件具有自解释性方面,是否有任何成熟的实践 为了得到一个想法,想象一下这样的情况: <data name=test records=2 type=fixed> <field name=foo start=0 length=2 type=numeric> <field name=bar start=2 length=4 type

我们以平面文件的形式接收大量数据:定界记录或固定长度记录。有时很难找出文件实际包含的内容

在将文件的模式嵌入到文件的开头或结尾以使文件具有自解释性方面,是否有任何成熟的实践

为了得到一个想法,想象一下这样的情况:

<data name=test records=2 type=fixed>
   <field name=foo start=0 length=2 type=numeric>
   <field name=bar start=2 length=4 type=text>
</data>
11test
12ing 

11测试
12

我们将在开始时解析xml,并将其用于读取记录。

你有没有看过灵感?

据我所知,没有,或者至少没有太多

我所知道的唯一一件事(就广泛接受的标准而言)是数据文件的第一行是列名——至少对于带分隔符的记录,对于固定长度的记录更难,尤其是如果数据可以包含多个记录类型(我发现固定长度的记录比带分隔符的记录更容易)

从我的立场来看,我建议您不能真正将定义嵌入到文件中。我假设您从外部来源获取数据,因此您不太可能从他们那里获得帮助,即使您这样做,您也会立即产生挑战,因为您无法(例如)在必要时使用Excel轻松打开文件


从侧面考虑一下,如果使用XML,您可以将该文件潜在地嵌入到定义中(大量CDATA)。这是一个更实用的解决方案,因为它在外部数据周围放置了一个包装器,而不要求修改数据本身。我不知道这有多实际,但我觉得这比反过来要好。

我不知道有什么既定的做法,但你的想法只是将模式预先添加到数据中似乎很好。ApacheAvro是一种类似于协议缓冲区和Thrift的数据序列化工具。我相信典型的Avro用法包括存储带有数据的模式(我猜是在流中预加)


我还想提一下这个问题。它们有一种模式语言,用于描述“特殊”数据格式。目前我认为他们只有C和ML实现,这可能是个问题。另一方面,他们的模式语言设计用于处理多种格式,因此在您自己基于XML的事情上使用它可能仍然是值得的。

PB针对小记录进行了优化,以获得更快、更低的延迟通信。在AFAICT中,它无法描述现有模式。Javier是正确的:我们正在尝试向现有模式添加元数据+1的有趣链接。谢谢,+1。您更喜欢包含元数据的附加文件吗?我们的目标只是向文件中添加一些数据,以确保它们符合我们的预期,并且已正确创建,例如,记录的数量就是发送者报告的数量。文件非常大,我们不需要在Excel或其他标准工具中打开文件。您对创建的文件有多大的控制权?这是一个相当关键的问题(-:当我使用EDI文件时(固定长度)他们倾向于使用页眉和页脚来定义记录计数和总数,这显然是有帮助的。文件来自组织外部。文件的内容和结构在正式协议中定义,因此我们有一些控制权。但是,我们对任何文件进行大的更改都很犹豫,因为我们有有很多遗留代码需要进一步处理。嗯……在这个基础上,我认为你在第一条评论中就有了它——我认为你想要的是一份“清单”与您发送的文件一起使用的文件,因此实际文件保持不变,但您会得到一个XML文件,该文件定义了格式并为您提供了某种形式的验证。如果供应商很难更改(去过那里…)你的情况没有恶化,如果不是这样,那么你就加载XML,它告诉你实际要加载的文件以及如何验证等等,然后你就开始了。痛苦很小。不过,不知道清单文件是否有标准!