“表格数据”的XML或CSV

时间:2011-05-04 09:22:19

标签: c++ c xml parsing csv

我有“表格数据”从服务器发送到客户端---我正在分析我应该使用CSV格式的格式还是XML。

我发送的数据可以是MB,服务器将流式传输,客户端将逐行读取它以开始削减输出(客户端不能等待所有数据到来)。

根据我目前的想法,CSV会很好 - 它会减少数据大小并且可以更快地解析。

XML是一种标准 - 我关心的是解析数据,因为它涉及到系统(实时解析)和数据大小。

什么是最好的解决方案?

感谢所有宝贵的建议。

4 个答案:

答案 0 :(得分:4)

如果它是“表格数据”并且表格相对固定且常规,我会选择CSV格式。特别是如果它是一个服务器和一个客户端。

如果您有多个客户端并希望在使用数据之前验证文件格式,则XML具有一些优势。另一方面,XML已经垄断了“代码膨胀”的市场,因此转移的数量将更多更大。

答案 1 :(得分:2)

我建议你去寻找XML。 有很多库可用于解析。 而且,如果以后数据格式发生变化,则XML的情况下的解析逻辑不会改变,只有业务逻辑可能需要改变。 But in case of CSV parsing logic might need a change

答案 2 :(得分:2)

我会使用CSV,标题表示每个字段的ID。

id, surname, givenname, phone-number
0, Doe, John, 555-937-911
1, Doe, Jane, 555-937-911

只要您不忘记标题,如果数据格式发生变化,您应该没问题。当然,在服务器开始发送新流之前,客户端需要更新

如果不是所有客户端都可以轻松更新,那么您需要一个更宽松的消息传递系统。

Google协议缓冲区专为此类向后/向前兼容性问题而设计,并将其与优秀(快速和紧凑)二进制编码功能相结合,以减少邮件大小。

如果你这样做,那么这个想法很简单:每条消息都代表一条线。如果要流式传输它们,则需要一个简单的“消息大小|消息blob”结构。

就个人而言,我一直认为XML设计膨胀。如果你选择了Human Readable格式,那么至少选择JSON,你就可以减少一半的标签。

答案 3 :(得分:0)

CSV格式会更小,因为您只需在第一行声明标题,然后在下面用数字行声明数据行,以便在流大小中添加任何额外的字符。