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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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_Flat File - Fatal编程技术网

Xml 保存结构化数据的最佳平面文件格式是什么?

Xml 保存结构化数据的最佳平面文件格式是什么?,xml,json,flat-file,Xml,Json,Flat File,我有5个不同字段的数据,包括整数、字符串和大字符串,我希望将其保存在某种平面文件容器中。我有成千上万个这样的条目,但我根本不需要任何类型的数据库,只需要遍历数据,不需要查询。我检查过的所有XML、JSON、YAML格式都要求每个条目都有冗余字段,即使我的数据是结构化的和同质的。类似CSV的东西会很棒,但我不能使用逗号或新行作为分隔符。有什么格式可以推荐吗 数据格式示例: id | epoch | short string | url | large description类似于CSV的文件格式似

我有5个不同字段的数据,包括整数、字符串和大字符串,我希望将其保存在某种平面文件容器中。我有成千上万个这样的条目,但我根本不需要任何类型的数据库,只需要遍历数据,不需要查询。我检查过的所有XML、JSON、YAML格式都要求每个条目都有冗余字段,即使我的数据是结构化的和同质的。类似CSV的东西会很棒,但我不能使用逗号或新行作为分隔符。有什么格式可以推荐吗

数据格式示例:


id | epoch | short string | url | large description

类似于CSV的文件格式似乎很合适,当然,您可以在文件中使用任何您想要的分隔符,如果存储的数据中存在所使用的字符,则只需对其进行转义即可

如果您不想转义单个字符,可以使用不输出您选择使用的任何分隔符的编码方案,例如

我爸爸比你爸爸强壮! 什么样的文件模式是最好的取决于许多情况。例如,;在客户端和服务器之间发送较小的数据块时,我非常喜欢JSON

尽管在平面文件模式中使用它之前,我会考虑一次和两次,尤其是当其中包含大量数据时

JSON在某种程度上是人类可读的,这对于调试来说是很好的,但对于其他很多方面来说并没有那么好

XML是一种很棒的格式,我喜欢它背后的想法,尽管它太复杂了

CSV文件或类似的模式遵循相同的想法是我的5美分

平面文件模式示例 id | epoch |短字符串| url |大描述

在上面的规范化只是指一种净化数据的方法,这样它就不会干扰我们模式的某些部分

逃逸\r\n是我们实现这一点所需要的,或者,正如前面提到的,只是使用一种编码算法,如Base64

您应该记住存储数据的顺序。如果您想更频繁地解析url,那么最好将其尽可能放在行的左侧


如果您想进行简单/快速的搜索,您可以/应该将所有大型描述存储在一个单独的文件中,并且只在需要时获取/处理这些数据。

类似于CSV的文件格式似乎很合适,当然,您可以在文件中使用您想要的任何分隔符,如果所存储的数据中存在所使用的字符,则只需对其进行转义

如果您不想转义单个字符,可以使用不输出您选择使用的任何分隔符的编码方案,例如

我爸爸比你爸爸强壮! 什么样的文件模式是最好的取决于许多情况。例如,;在客户端和服务器之间发送较小的数据块时,我非常喜欢JSON

尽管在平面文件模式中使用它之前,我会考虑一次和两次,尤其是当其中包含大量数据时

JSON在某种程度上是人类可读的,这对于调试来说是很好的,但对于其他很多方面来说并没有那么好

XML是一种很棒的格式,我喜欢它背后的想法,尽管它太复杂了

CSV文件或类似的模式遵循相同的想法是我的5美分

平面文件模式示例 id | epoch |短字符串| url |大描述

在上面的规范化只是指一种净化数据的方法,这样它就不会干扰我们模式的某些部分

逃逸\r\n是我们实现这一点所需要的,或者,正如前面提到的,只是使用一种编码算法,如Base64

您应该记住存储数据的顺序。如果您想更频繁地解析url,那么最好将其尽可能放在行的左侧


如果您想进行简单/快速的搜索,您可以/应该将所有大型描述存储在单独的文件中,并且只在需要时获取/处理这些数据。

您可以使用CSV并使用自己的分隔符,如$%*,;。否则,您可以转义文本中的逗号和新行。

您可以使用CSV并使用自己的分隔符,如$%*,;。否则,您可以在文本中转义逗号和新行。

您可以使用JSON数组而不是对象。这样可以将噪音限制在最低限度。它可以是单个数组或数组数组,具体取决于数据的格式

它不会像XML那样冗长。我不知道亚姆

例如,您可以:

[
    [123, 123456789, "short string", "http://url", "large ... description"],
    [123, 123456789, "short string", "http://url", "large ... description"],
    [123, 123456789, "short string", "http://url", "large ... description"],
    [123, 123456789, "short string", "http://url", "large ... description"]
]

可以使用JSON数组而不是对象。这样可以将噪音限制在最低限度。它可以是单个数组或数组数组,具体取决于数据的格式

它不会像XML那样冗长。我不知道亚姆

< p> 例如,您可以:

[
    [123, 123456789, "short string", "http://url", "large ... description"],
    [123, 123456789, "short string", "http://url", "large ... description"],
    [123, 123456789, "short string", "http://url", "large ... description"],
    [123, 123456789, "short string", "http://url", "large ... description"]
]


我有一个问题,如果你没有对你的数据进行分类,那么每次你需要扫描并从元素1加载到元素Zth?你能举一个你的数据格式的例子给我们一个更具体的解决方案吗?@ajreal-yep我扫描这些数据大概总共5次左右,以后再也不用了。@lkuty刚刚把它添加到我的帖子中。大型描述约300字。可能不包含换行符。我有个问题,如果你没有对你的数据进行分类,那么每次你需要扫描并从元素1加载到元素Zth时?你能给我们举一个数据格式的例子给你一个更具体的解决方案吗?@ajreal-yep我扫描这些数据大概总共5次左右,以后再也不用了。@lkuty刚刚在我的帖子中添加了这个。大型描述约300字。可能不包含换行符。考虑到我的数据集最多为10兆字节,数万行,这不是个坏主意。我只是不习惯使用随机分隔符和转义字符。但是我可能应该忘记这一点。@oxuser通过使用文章中提到/链接的Base64之类的编码算法来规范数据,这样您就不必担心分隔符冲突之类的问题了。哦,很好,我从来都不知道这一点。Base64通常用于什么?像这样的目的?@oxuser嗯,不是真的用于这样的目的。。尽管这是一种简单的方法,可以控制用于表示任意字节序列的字符。Base64仅由可打印字符组成,通常用于表示原始二进制数据。bae64非常流行的用例示例:@oxuser请将答案标记为已接受,除非您正在寻找替代答案?然后更新你的问题,现在让我来帮你。谢谢。考虑到我的数据集最多10兆字节,数万行,这不是一个坏主意。我只是不习惯使用随机分隔符和转义字符。但是我可能应该忘记这一点。@oxuser通过使用文章中提到/链接的Base64之类的编码算法来规范数据,这样您就不必担心分隔符冲突之类的问题了。哦,很好,我从来都不知道这一点。Base64通常用于什么?像这样的目的?@oxuser嗯,不是真的用于这样的目的。。尽管这是一种简单的方法,可以控制用于表示任意字节序列的字符。Base64仅由可打印字符组成,通常用于表示原始二进制数据。bae64非常流行的用例示例:@oxuser请将答案标记为已接受,除非您正在寻找替代答案?然后更新你的问题,现在让我来帮你。谢谢。我的字段并非都是相同类型的int,strings,所以我可以将它们全部存储在JSON数组中吗?它会是什么样子?JSON可以解决这个问题,没问题。阵列不必是均匀的。我喜欢这个想法。使用JSON的方法有点不靠谱,但很有意义。请注意,在我的示例中,数组值的类型不同,但每个数组的位置都相同:第一个是id,第二个是历元。。。就像你的例子一样。如果位置可能也不同,那么您需要一种方法来识别它们。在这种情况下,JSON对象可能是我的选择。不过,实现/使用适当的JSON解析器要比解析简单的CSV复杂得多。如果你不打算使用完整的json特性,比如表示对象等,那么真的不需要这样的方案。我的字段不是所有的int,strings类型都相同,那么我可以将它们全部存储在json数组中吗?它会是什么样子?JSON可以解决这个问题,没问题。阵列不必是均匀的。我喜欢这个想法。使用JSON的方法有点不靠谱,但很有意义。请注意,在我的示例中,数组值的类型不同,但每个数组的位置都相同:第一个是id,第二个是历元。。。就像你的例子一样。如果位置可能也不同,那么您需要一种方法来识别它们。在这种情况下,JSON对象可能是我的选择。不过,实现/使用适当的JSON解析器要比解析简单的CSV复杂得多。如果你不打算使用完整的json特性,比如表示对象等等,那么真的不需要这样的方案。